diff --git a/sandbox/CliFrameworkBenchmark/Benchmark.cs b/sandbox/CliFrameworkBenchmark/Benchmark.cs index 1e3e9b1c..c78de1c8 100644 --- a/sandbox/CliFrameworkBenchmark/Benchmark.cs +++ b/sandbox/CliFrameworkBenchmark/Benchmark.cs @@ -1,23 +1,15 @@ -// This benchmark project is based on CliFx.Benchmarks. +// This benchmark project is based on CliFx.Benchmarks. // https://github.com/Tyrrrz/CliFx/tree/master/CliFx.Benchmarks/ using BenchmarkDotNet.Attributes; -using BenchmarkDotNet.Engines; using BenchmarkDotNet.Order; using CliFx; using Cocona.Benchmark.External.Commands; -using CommandLine; using ConsoleAppFramework; -using PowerArgs; using Spectre.Console.Cli; -using System.ComponentModel.DataAnnotations.Schema; -using BenchmarkDotNet.Columns; namespace Cocona.Benchmark.External; -// use ColdStart strategy to measure startup time evaluation -[SimpleJob(RunStrategy.ColdStart, launchCount: 1, warmupCount: 0, iterationCount: 1, invocationCount: 1)] -[MemoryDiagnoser] [Orderer(SummaryOrderPolicy.FastestToSlowest)] public class Benchmark { diff --git a/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj b/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj index 0af9c640..8cc59763 100644 --- a/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj +++ b/sandbox/CliFrameworkBenchmark/CliFrameworkBenchmark.csproj @@ -15,8 +15,8 @@ - - + + @@ -25,9 +25,9 @@ - - - + + + diff --git a/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs b/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs index c37a45d3..a536ceb6 100644 --- a/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs +++ b/sandbox/CliFrameworkBenchmark/Commands/SystemCommandLineCommand.cs @@ -11,25 +11,37 @@ public static int Execute(string[] args) { var command = new RootCommand { - new Option(new[] {"--str", "-s"}), - new Option(new[] {"--int", "-i"}), - new Option(new[] {"--bool", "-b"}), + new Option("--str", ["-s"]), + new Option("--int", ["-i"]), + new Option("--bool", ["-b"]), }; - command.Handler = CommandHandler.Create(ExecuteHandler); - return command.Invoke(args); + command.SetAction(parseResult => + { + var handler = CommandHandler.Create(ExecuteHandler); + return handler.InvokeAsync(parseResult); + }); + + ParseResult parseResult = command.Parse(args); + return parseResult.Invoke(); } public static Task ExecuteAsync(string[] args) { var command = new RootCommand { - new Option(new[] {"--str", "-s"}), - new Option(new[] {"--int", "-i"}), - new Option(new[] {"--bool", "-b"}), + new Option("--str", ["-s"]), + new Option("--int", ["-i"]), + new Option("--bool", ["-b"]), }; - command.Handler = CommandHandler.Create(ExecuteHandler); - return command.InvokeAsync(args); + command.SetAction((parseResult, cancellationToken) => + { + var handler = CommandHandler.Create(ExecuteHandler); + return handler.InvokeAsync(parseResult); + }); + + ParseResult parseResult = command.Parse(args); + return parseResult.InvokeAsync(); } } diff --git a/sandbox/CliFrameworkBenchmark/Program.cs b/sandbox/CliFrameworkBenchmark/Program.cs index 5ee4add9..560f93c3 100644 --- a/sandbox/CliFrameworkBenchmark/Program.cs +++ b/sandbox/CliFrameworkBenchmark/Program.cs @@ -2,8 +2,12 @@ // https://github.com/Tyrrrz/CliFx/tree/master/CliFx.Benchmarks/ using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Diagnosers; +using BenchmarkDotNet.Engines; +using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; +using BenchmarkDotNet.Toolchains.CsProj; using Perfolizer.Horology; namespace Cocona.Benchmark.External; @@ -12,6 +16,22 @@ class Program { static void Main(string[] args) { - BenchmarkRunner.Run(DefaultConfig.Instance.WithSummaryStyle(SummaryStyle.Default.WithTimeUnit(TimeUnit.Millisecond)), args); + var config = DefaultConfig.Instance + .WithSummaryStyle(SummaryStyle.Default + .WithTimeUnit(TimeUnit.Millisecond)); + + config.AddDiagnoser(MemoryDiagnoser.Default); + config.AddDiagnoser(new ThreadingDiagnoser(new ThreadingDiagnoserConfig(displayLockContentionWhenZero: false, displayCompletedWorkItemCountWhenZero: false))); + + config.AddJob(Job.Default + .WithStrategy(RunStrategy.ColdStart) + .WithLaunchCount(1) + .WithWarmupCount(0) + .WithIterationCount(1) + .WithInvocationCount(1) + .WithToolchain(CsProjCoreToolchain.NetCoreApp80) + .DontEnforcePowerPlan()); + + BenchmarkRunner.Run(config, args); } } diff --git a/sandbox/GeneratorSandbox/GeneratorSandbox.csproj b/sandbox/GeneratorSandbox/GeneratorSandbox.csproj index ff2d53f9..8ba7778a 100644 --- a/sandbox/GeneratorSandbox/GeneratorSandbox.csproj +++ b/sandbox/GeneratorSandbox/GeneratorSandbox.csproj @@ -18,8 +18,8 @@ - + --> + diff --git a/src/ConsoleAppFramework/ConsoleAppFramework.csproj b/src/ConsoleAppFramework/ConsoleAppFramework.csproj index 7e06a5b2..363e1b74 100644 --- a/src/ConsoleAppFramework/ConsoleAppFramework.csproj +++ b/src/ConsoleAppFramework/ConsoleAppFramework.csproj @@ -32,7 +32,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/ConsoleAppFramework.GeneratorTests/ConsoleAppFramework.GeneratorTests.csproj b/tests/ConsoleAppFramework.GeneratorTests/ConsoleAppFramework.GeneratorTests.csproj index 4ac531e4..32d7b249 100644 --- a/tests/ConsoleAppFramework.GeneratorTests/ConsoleAppFramework.GeneratorTests.csproj +++ b/tests/ConsoleAppFramework.GeneratorTests/ConsoleAppFramework.GeneratorTests.csproj @@ -12,10 +12,14 @@ - - - - + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all