// Copyright (c) 2023 Timothy Schenk. Subject to the GNU AGPL Version 3 License.

using BenchmarkDotNet.Analysers;
using BenchmarkDotNet.Columns;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Diagnosers;
using BenchmarkDotNet.Environments;
using BenchmarkDotNet.Exporters;
using BenchmarkDotNet.Exporters.Csv;
using BenchmarkDotNet.Jobs;

namespace Benchmarks;

public class GenericConfig : ManualConfig
{
    public GenericConfig()
    {
        AddJob(Job.Default
                .WithRuntime(CoreRuntime.Core80))
            .AddDiagnoser(ThreadingDiagnoser.Default, MemoryDiagnoser.Default,
                EventPipeProfiler.Default)
            .AddAnalyser(MinIterationTimeAnalyser.Default, OutliersAnalyser.Default,
                RuntimeErrorAnalyser.Default, EnvironmentAnalyser.Default)
            .AddColumn(RankColumn.Arabic).AddExporter(CsvExporter.Default, MarkdownExporter.Default);
        AddJob(Job.Default
                .WithRuntime(CoreRuntime.Core70))
            .AddDiagnoser(ThreadingDiagnoser.Default, MemoryDiagnoser.Default,
                EventPipeProfiler.Default)
            .AddAnalyser(MinIterationTimeAnalyser.Default, OutliersAnalyser.Default,
                RuntimeErrorAnalyser.Default, EnvironmentAnalyser.Default)
            .AddColumn(RankColumn.Arabic).AddExporter(CsvExporter.Default, MarkdownExporter.Default);
    }
}