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

标签 f# benchmarking benchmarkdotnet

我正在编写我过去用 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.Is64BitOperatingSystemSystem.Environment.OSVersion一开始就不要在无效的操作系统上运行基准测试。

关于f# - 如何限制 BenchmarkDotNet 作业仅在特定平台上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45632625/

相关文章:

performance - 在 Linux 上本地对 Apache 进行基准测试的好方法是什么?

javascript - 即时对 DOM 进行基准测试

f# - 无法让 OpenCover 假装工作

f# - 与 anycpu 相比,针对 x64 有时会导致非常糟糕的性能

F# List.first 已弃用,新方法是什么

c# - 如何解释 BenchmarkDotNet 和 dotMemory 的结果?

c# - BenchmarkDotNet InProcessEmitToolchain 完整示例

f# - 在 F# 中的选择之上构建要么(或结果)

mysql - 基准的选择和更新查询数量?

c# - 运行 BenchmarkDotNet 时为 "Wrong assembly binding redirects"