如何限制BenchmarkDotNet任务仅在特定平台上运行?

4
我正在编写一个F#版本的程序,这个程序之前是用本地代码编写的。我使用了BenchmarkDotNet来衡量它的性能。我还在应用程序的输出目录中放置了一个本地的EXE文件。
我将本地程序设置为基准测试,并发现它比我的F#程序快了5倍。正如我所预料的!
然而,这个本地程序在GitHub上发布时只提供Win64二进制文件。如果有人使用其他操作系统尝试运行它,它将会崩溃。
因此,如何指定这个基准测试只在64位Windows上运行?

1
put it in a README? - s952163
此外,BenchmarkDotNet 中还有一些配置设置,例如平台:x64,请参见 http://benchmarkdotnet.org/Configs/Jobs.htm。 - s952163
1个回答

2
在BenchmarkDotNet中,有一个Jobs的概念。Jobs定义了如何执行基准测试。因此,您可以将“仅限x64”条件表示为一个Job。请注意,不同的64位jit编译器取决于运行时(LegacyJIT-x64和RyuJIT-x64用于完整的.NET Framework,RyuJIT-x64用于.NET Core和Mono JIT编译器)。您不仅可以请求特定平台,还可以请求特定的JIT编译器(它可能会显著影响性能),例如:
[<RyuJitX64Job>]
member this.MyAwesomeBenchmark () = // ...

在这种情况下,用户将收到通知,无法为所需平台编译基准测试。
不幸的是,目前没有办法要求特定的操作系统(只有一个选项:当前操作系统)。因此,在您的情况下,最好在开始时检查 System.Environment.Is64BitOperatingSystemSystem.Environment.OSVersion,并且不要在无效的操作系统上运行基准测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接