【问题标题】:BenchmarkDotNet InProcessEmitToolchain Complete SampleBenchmarkDotNet InProcessEmitToolchain 完整示例
【发布时间】:2022-10-15 17:59:11
【问题描述】:

我第一次关注 BenchmarkDotNet 和一般的基准测试。由于我们工作笔记本电脑的防病毒限制,我似乎无法使用普通的 BenchmarkRunner 运行基准测试,因此我尝试使用 InProcessEmitToolchain,如 here 所记录的那样。但是,在这些示例和here 列出的示例中,我看不到实际触发基准测试的应用程序的入口点,而且我在阅读文档时也没有得到任何有用的信息。

谁能指出如何使用 InProcessEmitToolchain 和/或作业的完整示例,该示例解释了如何将作业与应用程序入口点结合使用来运行测试?

【问题讨论】:

    标签: c# benchmarking benchmarkdotnet


    【解决方案1】:

    我在防病毒(Windows Defender)阻止 BenchmarkDotNet 时遇到了同样的问题。我能够弄清楚如何更改工具链设置,尽管我不得不使用InProcessNoEmitToolchain,因为InProcessEmitToolchain 也被阻止了。

    下面的示例实际上并未触发防病毒软件,但它显示了如何定义要使用的工具链:

    [程序.cs]

    using BenchmarkDotNet.Running;
    using Benchmarks;
    
    _ = BenchmarkRunner.Run<MaterializeTest>();
    

    [MaterializeTest.cs]

    using BenchmarkDotNet.Attributes;
    
    namespace Benchmarks;
    
    [Config(typeof(AntiVirusFriendlyConfig))]
    [MemoryDiagnoser]
    public class MaterializeTest
    {
        IEnumerable<int> _sequence;
    
        [Params(10, 100, 1000, 10000)]
        public int size;
    
        [GlobalSetup]
        public void Setup()
        {
            _sequence = Enumerable.Range(0, size).Select(i => Random.Shared.Next());
        }
    
        [Benchmark]
        public IReadOnlyList<int> ToList() => _sequence.ToList();
    
        [Benchmark]
        public IReadOnlyList<int> ToArray() => _sequence.ToArray();
    }
    

    [AntiVirusFriendlyConfig.cs]

    using BenchmarkDotNet.Configs;
    using BenchmarkDotNet.Jobs;
    using BenchmarkDotNet.Toolchains.InProcess.NoEmit;
    
    namespace Benchmarks;
    
    public class AntiVirusFriendlyConfig : ManualConfig
    {
        public AntiVirusFriendlyConfig()
        {
            AddJob(Job.MediumRun
                .WithToolchain(InProcessNoEmitToolchain.Instance));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2014-03-13
      • 2012-10-12
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多