From d8db297d7201ef05aea7fd7a547491f8cadce555 Mon Sep 17 00:00:00 2001 From: filzrev <103790468+filzrev@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:23:46 +0900 Subject: [PATCH] chore: update benchmarks --- sandbox/CliFrameworkBenchmark/Benchmark.cs | 4 +- .../CliFrameworkBenchmark.csproj | 7 ++- .../Commands/SpectreConsoleCliCommand.cs | 2 +- .../Commands/SystemCommandLineCommand.cs | 47 +++++-------------- 4 files changed, 19 insertions(+), 41 deletions(-) diff --git a/sandbox/CliFrameworkBenchmark/Benchmark.cs b/sandbox/CliFrameworkBenchmark/Benchmark.cs index c78de1c8..f0829474 100644 --- a/sandbox/CliFrameworkBenchmark/Benchmark.cs +++ b/sandbox/CliFrameworkBenchmark/Benchmark.cs @@ -40,7 +40,7 @@ public ValueTask ExecuteWithCliFx() [Benchmark(Description = "System.CommandLine")] public int ExecuteWithSystemCommandLine() { - return SystemCommandLineCommand.Execute(Arguments); + return new SystemCommandLineCommand().Execute(Arguments); } //[Benchmark(Description = "McMaster.Extensions.CommandLineUtils")] @@ -71,7 +71,7 @@ public int ExecuteWithSystemCommandLine() [Benchmark(Description = "ConsoleAppFramework v5", Baseline = true)] public unsafe void ExecuteConsoleAppFramework() { - ConsoleApp.Run(Arguments, &ConsoleAppFrameworkCommand.Execute); + ConsoleApp.Run(Arguments, &ConsoleAppFrameworkCommandWithCancellationToken.Execute); } // for alpha testing diff --git a/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj b/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj index 4844098c..cfc15e05 100644 --- a/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj +++ b/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj @@ -15,7 +15,7 @@ - + @@ -25,9 +25,8 @@ - - - + + diff --git a/sandbox/CliFrameworkBenchmark/Commands/SpectreConsoleCliCommand.cs b/sandbox/CliFrameworkBenchmark/Commands/SpectreConsoleCliCommand.cs index 411ecc25..8d5f453d 100644 --- a/sandbox/CliFrameworkBenchmark/Commands/SpectreConsoleCliCommand.cs +++ b/sandbox/CliFrameworkBenchmark/Commands/SpectreConsoleCliCommand.cs @@ -17,7 +17,7 @@ public sealed class Settings : CommandSettings public bool boolOption { get; init; } } - public override int Execute(CommandContext context, Settings settings) + public override int Execute(CommandContext context, Settings settings, CancellationToken cancellationToken) { return 0; } diff --git a/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs b/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs index 3a7f72b5..5cca91bd 100644 --- a/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs +++ b/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs @@ -1,47 +1,26 @@ -using System.CommandLine; -using System.CommandLine.NamingConventionBinder; +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Running; +using System.CommandLine; namespace Cocona.Benchmark.External.Commands; public class SystemCommandLineCommand { - public static int ExecuteHandler(string s, int i, bool b) => 0; - - public static int Execute(string[] args) + public int Execute(string[] args) { - var command = new RootCommand - { - new Option("--str", ["-s"]), - new Option("--int", ["-i"]), - new Option("--bool", ["-b"]), - }; + var stringOption = new Option("--str", "-s"); + var intOption = new Option("--int", "-i"); + var boolOption = new Option("--bool", "-b"); - command.SetAction(parseResult => - { - var handler = CommandHandler.Create(ExecuteHandler); - return handler.InvokeAsync(parseResult); - }); + var command = new RootCommand { stringOption, intOption, boolOption }; - ParseResult parseResult = command.Parse(args); - return parseResult.Invoke(); - } - - public static Task ExecuteAsync(string[] args) - { - var command = new RootCommand - { - new Option("--str", ["-s"]), - new Option("--int", ["-i"]), - new Option("--bool", ["-b"]), - }; - - command.SetAction((parseResult, cancellationToken) => + command.SetAction(parseResult => { - var handler = CommandHandler.Create(ExecuteHandler); - return handler.InvokeAsync(parseResult); + _ = parseResult.GetValue(stringOption); + _ = parseResult.GetValue(intOption); + _ = parseResult.GetValue(boolOption); }); - ParseResult parseResult = command.Parse(args); - return parseResult.InvokeAsync(); + return command.Parse(args).Invoke(); } }