如何限制BenchmarkDotNet作业仅在特定平台上运行?

问题描述:

我正在编写过去用本机代码编写的程序的F#端口。我用BenchmarkDotNet来衡量它的表现。我还在应用程序的输出目录中放置了一个本机EXE。如何限制BenchmarkDotNet作业仅在特定平台上运行?

我将我的本地程序设置为基准基准,并且发现它比我的F#程序快了5倍。正如我所料!

但是,本机程序在GitHub上发布,并且仅作为Win64二进制文件发布。如果有人使用其他操作系统尝试运行它,它会崩溃。

那么,如何指定这个基准测试只能在64位Windows上运行?

+0

把它放在自述文件中? – s952163

+0

还有一些BenchmarkDotNet中的配置设置,例如平台:x64,请参阅http://benchmarkdotnet.org/Configs/Jobs.htm – s952163

在BenchmarkDotNet中,有一个概念Jobs。作业定义了如何执行基准。 因此,您可以将您的“仅限x64”作为工作表达。请注意,有几种不同的64x jit编译器依赖于运行时(LegacyJIT-x64和用于完整.NET Framework的RyuJIT-x64,用于.NET Core的RyuJIT-x64和Mono JIT编译器)。您可以要求不仅是一个特定的平台,而且还将具体的JIT编译器(它可以显著影响性能),例如:

[<RyuJitX64Job>] 
member this.MyAwesomeBenchmark() = // ... 

在这种情况下,用户将被告知,这是不可能编译基准要求平台。

不幸的是,现在没有办法需要一个特定的操作系统(只有一个选项:当前操作系统)。因此,就你而言,最好在开始时检查System.Environment.Is64BitOperatingSystemSystem.Environment.OSVersion,并且不要在无效操作系统上运行基准测试。