2017-08-11 90 views
2

我正在編寫過去用本機代碼編寫的程序的F#端口。我用BenchmarkDotNet來衡量它的表現。我還在應用程序的輸出目錄中放置了一個本機EXE。如何限制BenchmarkDotNet作業僅在特定平臺上運行?

我將我的本地程序設置爲基準基準,並且發現它比我的F#程序快了5倍。正如我所料!

但是,本機程序在GitHub上發佈,並且僅作爲Win64二進制文件發佈。如果有人使用其他操作系統嘗試運行它,它會崩潰。

那麼,如何指定這個基準測試只能在64位Windows上運行?

+0

把它放在自述文件中? – s952163

+0

還有一些BenchmarkDotNet中的配置設置,例如平臺:x64,請參閱http://benchmarkdotnet.org/Configs/Jobs.htm – s952163

回答

1

在BenchmarkDotNet中,有一個概念Jobs。作業定義瞭如何執行基準。 因此,您可以將您的「僅限x64」作爲工作表達。請注意,有幾種不同的64x jit編譯器依賴於運行時(LegacyJIT-x64和用於完整.NET Framework的RyuJIT-x64,用於.NET Core的RyuJIT-x64和Mono JIT編譯器)。您可以要求不僅是一個特定的平臺,而且還將具體的JIT編譯器(它可以顯著影響性能),例如:

[<RyuJitX64Job>] 
member this.MyAwesomeBenchmark() = // ... 

在這種情況下,用戶將被告知,這是不可能編譯基準要求平臺。

不幸的是,現在沒有辦法需要一個特定的操作系統(只有一個選項:當前操作系統)。因此,就你而言,最好在開始時檢查System.Environment.Is64BitOperatingSystemSystem.Environment.OSVersion,並且不要在無效操作系統上運行基準測試。