mirror of
				https://github.com/Tyrrrz/CliFx.git
				synced 2025-10-25 15:19:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.CommandLine;
 | |
| using System.CommandLine.Invocation;
 | |
| using System.Threading.Tasks;
 | |
| using BenchmarkDotNet.Attributes;
 | |
| 
 | |
| namespace CliFx.Benchmarks;
 | |
| 
 | |
| public partial class Benchmarks
 | |
| {
 | |
|     public class SystemCommandLineCommand
 | |
|     {
 | |
|         public static int ExecuteHandler(string s, int i, bool b) => 0;
 | |
| 
 | |
|         public Task<int> ExecuteAsync(string[] args)
 | |
|         {
 | |
|             var command = new RootCommand
 | |
|             {
 | |
|                 new Option(new[] {"--str", "-s"})
 | |
|                 {
 | |
|                     Argument = new Argument<string?>()
 | |
|                 },
 | |
|                 new Option(new[] {"--int", "-i"})
 | |
|                 {
 | |
|                     Argument = new Argument<int>()
 | |
|                 },
 | |
|                 new Option(new[] {"--bool", "-b"})
 | |
|                 {
 | |
|                     Argument = new Argument<bool>()
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             command.Handler = CommandHandler.Create(
 | |
|                 typeof(SystemCommandLineCommand).GetMethod(nameof(ExecuteHandler))!
 | |
|             );
 | |
| 
 | |
|             return command.InvokeAsync(args);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     [Benchmark(Description = "System.CommandLine")]
 | |
|     public async Task<int> ExecuteWithSystemCommandLine() =>
 | |
|         await new SystemCommandLineCommand().ExecuteAsync(Arguments);
 | |
| } |