gpt4 book ai didi

c# - BenchmarkDotNet InProcessEmitToolchain 完整示例

转载 作者:行者123 更新时间:2023-12-05 03:19:22 24 4
gpt4 key购买 nike

我有史以来第一次关注 BenchmarkDotNet 和一般基准测试。由于我们工作笔记本电脑上的防病毒限制,我似乎无法使用普通的 BenchmarkRunner 运行基准测试,因此我尝试使用 InProcessEmitToolchain,如文档中所述 here .但是,在那些样本和列出的样本中 here我看不到实际会触发基准测试的应用程序的入口点,而且我通读文档也无济于事。

任何人都可以指出如何使用 InProcessEmitToolchain 和/或解释如何将作业与应用程序入口点结合使用以运行测试的作业的完整示例吗?

最佳答案

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

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

[Program.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));
}
}

[基准.csproj]

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.2" />
</ItemGroup>
</Project>

关于c# - BenchmarkDotNet InProcessEmitToolchain 完整示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73475521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com