我正在编写我过去用 native 代码编写的程序的 F# 端口。我用了BenchmarkDotNet来衡量其性能。我还在应用程序的输出目录中放置了一个 native EXE。
我将我的 native 程序设置为基准基准,发现它比我的 F# 程序快 5 倍。正如我所料!
但是, native 程序发布在 GitHub 上并仅作为 Win64 二进制文件分发。如果有人使用其他操作系统尝试运行它,它就会崩溃。
那么,如何指定此基准测试仅在 64 位 Windows 上运行?
最佳答案
在BenchmarkDotNet中,有一个Jobs的概念.作业定义了应该如何执行基准测试。 因此,您可以将“仅限 x64”条件表达为一项工作。请注意,有几种不同的 64x jit 编译器取决于运行时(完整的 .NET Framework 的 LegacyJIT-x64 和 RyuJIT-x64,.NET Core 的 RyuJIT-x64 和 Mono JIT 编译器)。您不仅可以请求特定的平台,还可以请求特定的 JIT 编译器(它会显着影响性能),例如:
[<RyuJitX64Job>]
member this.MyAwesomeBenchmark () = // ...
在这种情况下,将通知用户不可能为所需平台编译基准。
不幸的是,目前无法要求特定操作系统(只有一个选项:当前操作系统)。因此,在您的情况下,最好检查 System.Environment.Is64BitOperatingSystem
和 System.Environment.OSVersion
一开始就不要在无效的操作系统上运行基准测试。
关于f# - 如何限制 BenchmarkDotNet 作业仅在特定平台上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45632625/