首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BenchmarkDotNet InProcessEmitToolchain完全样本

BenchmarkDotNet InProcessEmitToolchain完全样本
EN

Stack Overflow用户
提问于 2022-08-24 15:04:41
回答 1查看 239关注 0票数 3

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

有人能告诉我如何使用InProcessEmitToolchain和/或作业的完整示例来解释如何结合应用程序入口点使用作业来运行测试吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-15 09:59:11

我也面临着同样的问题:杀毒(Windows )阻塞BenchmarkDotNet。我能够找到如何更改工具链设置,尽管我不得不使用InProcessNoEmitToolchain,因为InProcessEmitToolchain也被阻塞了。

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

Program.cs

代码语言:javascript
复制
using BenchmarkDotNet.Running;
using Benchmarks;

_ = BenchmarkRunner.Run<MaterializeTest>();

MaterializeTest.cs

代码语言:javascript
复制
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

代码语言:javascript
复制
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));
    }
}

Benchmarks.csproj

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73475521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档