Skip to content

Conversation

@filzrev
Copy link
Contributor

@filzrev filzrev commented Nov 12, 2025

This PR update sandbox/CliFrameworkBenchmark project.

What's changed in this PR

  1. Update System.CommandLine package to 2.0.0
  2. Remove deprecated System.CommandLine.NamingConventionBinder package
    Note: CancellationToken parameter is not passed. Because it's supported only when using ExecuteAsync.
  3. Update Spectre.Console package to latest version.
    and add CancellationToken parameter because it's required on latest version.
  4. Update ConsoleAppFramework benchmark to use ConsoleAppFrameworkCommandWithCancellationToken
  5. Update BenchmarkDotNet version.

Benchmark Results

Method Mean Error StdDev Ratio RatioSD Completed Work Items Allocated Alloc Ratio
'ConsoleAppFramework v5' 4.886 ms 0.3664 ms 0.4220 ms 1.01 0.12 1.0000 880 B 1.00
System.CommandLine 15.151 ms 0.8430 ms 0.9707 ms 3.12 0.32 - 7088 B 8.05
CliFx 26.554 ms 1.1390 ms 1.3116 ms 5.47 0.52 - 66696 B 75.79
Cocona.Lite 49.702 ms 1.2712 ms 1.4639 ms 10.24 0.89 1.0000 59384 B 67.48
Spectre.Console.Cli 61.221 ms 2.4988 ms 2.8776 ms 12.62 1.19 - 69424 B 78.89
Cocona 149.128 ms 8.9851 ms 10.3473 ms 30.73 3.27 3.0000 476592 B 541.58

ReadMe.md benchmark results image need to be updated.

@neuecc
Copy link
Member

neuecc commented Nov 12, 2025

Thank you, there's quite a big difference.
I don't think it's fair to leave it as is, so I'll update the ReadMe right away.

@neuecc neuecc merged commit 244e5df into Cysharp:master Nov 12, 2025
1 check passed
@neuecc
Copy link
Member

neuecc commented Nov 12, 2025

I've updated ReadMe(and some modified benchmark), thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants