Files
Joseph Doherty a70d8befae
All checks were successful
NuGet Publish / build-and-pack (push) Successful in 46s
NuGet Publish / publish-to-gitea (push) Successful in 56s
Reformat / cleanup
2026-02-21 08:10:36 -05:00

89 lines
2.8 KiB
C#
Executable File

using BenchmarkDotNet.Columns;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Exporters;
using BenchmarkDotNet.Reports;
using BenchmarkDotNet.Running;
using Perfolizer.Horology;
using Serilog.Context;
namespace ZB.MOM.WW.CBDD.Tests.Benchmark;
internal class Program
{
private static void Main(string[] args)
{
var logger = Logging.CreateLogger<Program>();
string 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<CompressionBenchmarks>(CreateConfig());
return;
}
if (mode == "compaction")
{
using var _ = LogContext.PushProperty("Mode", "CompactionBenchmarks");
BenchmarkRunner.Run<CompactionBenchmarks>(CreateConfig());
return;
}
if (mode == "mixed")
{
using var _ = LogContext.PushProperty("Mode", "MixedWorkloadBenchmarks");
BenchmarkRunner.Run<MixedWorkloadBenchmarks>(CreateConfig());
return;
}
if (mode == "gate")
{
using var _ = LogContext.PushProperty("Mode", "PerformanceGateSmoke");
PerformanceGateSmoke.Run(logger);
return;
}
if (mode == "all")
{
using var _ = LogContext.PushProperty("Mode", "AllBenchmarks");
var config = CreateConfig();
BenchmarkRunner.Run<InsertBenchmarks>(config);
BenchmarkRunner.Run<ReadBenchmarks>(config);
BenchmarkRunner.Run<SerializationBenchmarks>(config);
BenchmarkRunner.Run<CompressionBenchmarks>(config);
BenchmarkRunner.Run<CompactionBenchmarks>(config);
BenchmarkRunner.Run<MixedWorkloadBenchmarks>(config);
return;
}
using var __ = LogContext.PushProperty("Mode", "BenchmarkDotNet");
var defaultConfig = CreateConfig();
BenchmarkRunner.Run<InsertBenchmarks>(defaultConfig);
BenchmarkRunner.Run<ReadBenchmarks>(defaultConfig);
BenchmarkRunner.Run<SerializationBenchmarks>(defaultConfig);
}
private static IConfig CreateConfig()
{
return DefaultConfig.Instance
.AddExporter(HtmlExporter.Default)
.WithSummaryStyle(SummaryStyle.Default
.WithRatioStyle(RatioStyle.Trend)
.WithTimeUnit(TimeUnit.Microsecond));
}
}