[Fork] Benchmarking Template

CSharp · Console

/Program.cs

using System;
using BenchmarkDotNet.Running;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Toolchains.InProcess.Emit;
using BenchmarkDotNet.Loggers;
using Perfolizer.Horology;

[assembly: System.Diagnostics.Debuggable(isJITTrackingEnabled: false, isJITOptimizerDisabled: false)]

BenchmarkRunner.Run<Benchmark>(DefaultConfig.Instance
    .AddJob(Job.Default
        .WithToolchain(new InProcessEmitToolchain(
            timeout: TimeSpan.FromSeconds(30),
            logOutput: false))
        .WithIterationTime(TimeInterval.FromMilliseconds(20)))
    .AddLogger(new ConsoleLogger(unicodeSupport: true, ConsoleLogger.CreateGrayScheme()))
    .WithOptions(ConfigOptions.DisableLogFile));

[MemoryDiagnoser]
public class Benchmark
{	
	[Benchmark]
	public int[] Params()
	{
		return TestParams(1, 2, 3, 4, 5, 6, 7, 8, 9);
	}
	
	[Benchmark]
	public (int, int, int, int, int, int, int, int, int) WithoutParams()
	{
		return TestWithoutParams(1, 2, 3, 4, 5, 6, 7, 8, 9);
	}
	
	private int[] TestParams(params int[] array) => array;
	
	private (int, int, int, int, int, int, int, int, int) TestWithoutParams(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9) => (p1, p2, p3, p4, p5, p6, p7, p8, p9);
}
;