mirror of
https://github.com/aphrody-labs/NuGet.Client.git
synced 2026-10-15 22:09:04 +00:00
29 lines
1.1 KiB
C#
29 lines
1.1 KiB
C#
using System.Reflection;
|
|
using BenchmarkDotNet.Running;
|
|
|
|
// Auto-discovers and runs all classes implementing IBenchmark in this assembly.
|
|
// To write benchmarks: add a new *.cs file (git-ignored by .gitignore in this directory)
|
|
// with a class that implements IBenchmark and annotates benchmark methods with [Benchmark].
|
|
// No changes to this file are needed. See README.md for an example.
|
|
|
|
Assembly assembly = Assembly.GetExecutingAssembly();
|
|
Type[] benchmarkTypes = [.. assembly.GetTypes()
|
|
.Where(t => typeof(IBenchmark).IsAssignableFrom(t) && t is { IsClass: true, IsAbstract: false })];
|
|
|
|
if (benchmarkTypes.Length > 0)
|
|
{
|
|
BenchmarkRunner.Run(benchmarkTypes, config: null, args: args);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("No benchmark classes found.");
|
|
Console.WriteLine("Create a *.cs file in this directory with a class that implements IBenchmark.");
|
|
Console.WriteLine("See README.md for an example.");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Marker interface for benchmark classes that are automatically discovered and run.
|
|
/// Implement this interface in a class and annotate methods with [Benchmark].
|
|
/// </summary>
|
|
public interface IBenchmark { }
|