我正在編寫過去用本機代碼編寫的程序的F#端口。我用BenchmarkDotNet來衡量它的表現。我還在應用程序的輸出目錄中放置了一個本機EXE。如何限制BenchmarkDotNet作業僅在特定平臺上運行?
我將我的本地程序設置爲基準基準,並且發現它比我的F#程序快了5倍。正如我所料!
但是,本機程序在GitHub上發佈,並且僅作爲Win64二進制文件發佈。如果有人使用其他操作系統嘗試運行它,它會崩潰。
那麼,如何指定這個基準測試只能在64位Windows上運行?
我正在編寫過去用本機代碼編寫的程序的F#端口。我用BenchmarkDotNet來衡量它的表現。我還在應用程序的輸出目錄中放置了一個本機EXE。如何限制BenchmarkDotNet作業僅在特定平臺上運行?
我將我的本地程序設置爲基準基準,並且發現它比我的F#程序快了5倍。正如我所料!
但是,本機程序在GitHub上發佈,並且僅作爲Win64二進制文件發佈。如果有人使用其他操作系統嘗試運行它,它會崩潰。
那麼,如何指定這個基準測試只能在64位Windows上運行?
在BenchmarkDotNet中,有一個概念Jobs。作業定義瞭如何執行基準。 因此,您可以將您的「僅限x64」作爲工作表達。請注意,有幾種不同的64x jit編譯器依賴於運行時(LegacyJIT-x64和用於完整.NET Framework的RyuJIT-x64,用於.NET Core的RyuJIT-x64和Mono JIT編譯器)。您可以要求不僅是一個特定的平臺,而且還將具體的JIT編譯器(它可以顯著影響性能),例如:
[<RyuJitX64Job>]
member this.MyAwesomeBenchmark() = // ...
在這種情況下,用戶將被告知,這是不可能編譯基準要求平臺。
不幸的是,現在沒有辦法需要一個特定的操作系統(只有一個選項:當前操作系統)。因此,就你而言,最好在開始時檢查System.Environment.Is64BitOperatingSystem
和System.Environment.OSVersion
,並且不要在無效操作系統上運行基準測試。
把它放在自述文件中? – s952163
還有一些BenchmarkDotNet中的配置設置,例如平臺:x64,請參閱http://benchmarkdotnet.org/Configs/Jobs.htm – s952163