【问题标题】:How to restrict a BenchmarkDotNet job to run only on specific platforms?如何限制 BenchmarkDotNet 作业仅在特定平台上运行?
【发布时间】:2017-08-11 10:11:33
【问题描述】:

我正在编写我过去用本机代码编写的程序的 F# 端口。我使用BenchmarkDotNet 来衡量它的性能。我还在应用程序的输出目录中放置了一个本机 EXE。

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

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

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

【问题讨论】:

标签: f# benchmarking benchmarkdotnet


【解决方案1】:

在 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,并且不要在无效操作系统上运行基准测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2016-10-01
    相关资源
    最近更新 更多