我正在编写我过去用本机代码编写的程序的 F# 端口。我使用BenchmarkDotNet来衡量它的性能。我还在应用程序的输出目录中放置了一个本机 EXE。
我将本机程序设置为基准基准,发现它比我的 F# 程序快 5 倍。正如我所料!
但是,本机程序发布在 GitHub 上并仅作为 Win64 二进制文件分发。如果有人使用另一个操作系统试图运行它,它会崩溃。
那么,如何指定这个基准测试只能在 64 位 Windows 上运行呢?
我正在编写我过去用本机代码编写的程序的 F# 端口。我使用BenchmarkDotNet来衡量它的性能。我还在应用程序的输出目录中放置了一个本机 EXE。
我将本机程序设置为基准基准,发现它比我的 F# 程序快 5 倍。正如我所料!
但是,本机程序发布在 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
在一开始就检查并不要在无效操作系统上运行基准测试。