refactor(benchmarks): Spectre.Console CLI + project restructure#23
Merged
Conversation
Tidy up the benchmarks project and modernize its command-line entry point. - Replace the if/else argument chain in Program.cs with a Spectre.Console.Cli CommandApp; commands live in Commands/ (benchmark, render, info) - Reorganize files: Suites/ (BenchmarkDotNet classes), Competitors/ (rival A* library adapters, was MazeBenchmarks/), Common/ (shared BenchmarkAgent + BenchmarkScenario) - Rename Agent -> BenchmarkAgent; centralize the maze path and canonical start/destination in BenchmarkScenario, resolved against the assembly base directory so every command works from any working directory - Re-enable the competitor maze benchmarks (RoyT, AStarLite, LinqToAStar) - Add a ReachabilityBenchmarkRunner suite for Pathfinder.GetReachable - Fix the stale Rider run configs (drop the removed Atomic.Pathfinding build method and obsolete configs; add a Benchmark Reachability config) - Fix the RoyTAStarMazeBunchmarkRunner.cs filename typo and drop the stale cavern.gif csproj reference NOTE: ReachabilityBenchmarkRunner depends on Pathfinder.GetReachable, which is not on master yet. This branch will not build until the GetReachable PR lands. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolve the MazeBenchmarkRunner.cs conflict by keeping the restructured Suites/ version with the competitor benchmarks enabled (master had commented them out in the now-relocated file). Brings in GetReachable, so ReachabilityBenchmarkRunner compiles and the whole solution builds again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Tidies up the
Migs.MPath.Benchmarksproject and modernizes how it's run.Program.csis now a thinCommandApp; the oldif/elseargument chain is gone. Commands live inCommands/(benchmark,render,info), with auto-generated--helpand friendly validation errors.Suites/— the BenchmarkDotNet[Benchmark]classesCompetitors/— rival A* library adapters (IMazeBenchmarkRunner); wasMazeBenchmarks/Common/— sharedBenchmarkAgent+BenchmarkScenario(maze path + canonical start/destination)BenchmarkScenarioresolves the maze andResults/paths against the assembly base directory, so every command works from any working directory (previouslydebug/renderonly worked from inside the project folder).reachabilitysuite (ReachabilityBenchmarkRunner) benchmarkingPathfinder.GetReachableacross small/medium/large budgets.Atomic.Pathfinding(pre-rename) build method and obsolete configs, added aBenchmark Reachabilityconfig, and corrected a stale.idea.imlignore entry.RoyTAStarMazeB*u*nchmarkRunner.csfilename typo, dropped the stalecavern.gifcsproj reference, suppressed a benign transitive-package TFM warning.ReachabilityBenchmarkRunnercallsPathfinder.GetReachable, which is not onmasteryet (it ships in the separate GetReachable PR). This branch will not build until GetReachable lands, so CI here is expected to be red until then. Everything else in the restructure compiles cleanly — the only build errors are the threeGetReachablereferences.Test status
GetReachablereferences.🤖 Generated with Claude Code