using BenchmarkDotNet.Columns; using BenchmarkDotNet.Configs; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; using Microsoft.Extensions.Logging; using Serilog.Context; namespace ZB.MOM.WW.CBDD.Tests.Benchmark; class Program { static void Main(string[] args) { var logger = Logging.CreateLogger(); var mode = args.Length > 0 ? args[0].Trim().ToLowerInvariant() : string.Empty; if (mode == "manual") { using var _ = LogContext.PushProperty("Mode", "Manual"); ManualBenchmark.Run(logger); return; } if (mode == "size") { using var _ = LogContext.PushProperty("Mode", "SizeBenchmark"); DatabaseSizeBenchmark.Run(logger); return; } if (mode == "compression") { using var _ = LogContext.PushProperty("Mode", "CompressionBenchmarks"); BenchmarkRunner.Run(CreateConfig()); return; } if (mode == "compaction") { using var _ = LogContext.PushProperty("Mode", "CompactionBenchmarks"); BenchmarkRunner.Run(CreateConfig()); return; } if (mode == "mixed") { using var _ = LogContext.PushProperty("Mode", "MixedWorkloadBenchmarks"); BenchmarkRunner.Run(CreateConfig()); return; } if (mode == "all") { using var _ = LogContext.PushProperty("Mode", "AllBenchmarks"); var config = CreateConfig(); BenchmarkRunner.Run(config); BenchmarkRunner.Run(config); BenchmarkRunner.Run(config); BenchmarkRunner.Run(config); BenchmarkRunner.Run(config); BenchmarkRunner.Run(config); return; } using var __ = LogContext.PushProperty("Mode", "BenchmarkDotNet"); var defaultConfig = CreateConfig(); BenchmarkRunner.Run(defaultConfig); BenchmarkRunner.Run(defaultConfig); BenchmarkRunner.Run(defaultConfig); } private static IConfig CreateConfig() { return DefaultConfig.Instance .AddExporter(HtmlExporter.Default) .WithSummaryStyle(SummaryStyle.Default .WithRatioStyle(RatioStyle.Trend) .WithTimeUnit(Perfolizer.Horology.TimeUnit.Microsecond)); } }