有些時候我們實現了某個功能, 但是僅僅通過有限的幾次調用無法知道這個功能的執行效率以及資源占用情況, 此時就可以使用 Benchmark 對這個功能進行基準測試 在 dotnet 中主要使用 BenchmarkDotNet BenchmarkDotNet 是一個.NET的基準測試框架, 主要用於測量 ...
有些時候我們實現了某個功能, 但是僅僅通過有限的幾次調用無法知道這個功能的執行效率以及資源占用情況, 此時就可以使用 Benchmark 對這個功能進行基準測試
在 dotnet 中主要使用 BenchmarkDotNet
BenchmarkDotNet 是一個.NET的基準測試框架, 主要用於測量.NET程式的性能
它可以幫助開發者編寫基準測試, 並自動運行這些測試, 生成詳細的基準報告
BenchmarkDotNet 的主要功能包括:
- 簡化基準測試的編寫, 通過屬性來標記要測試的方法
- 支持多種基準測試模式, 如平均時間、記憶體分配等
- 自動進行基準測試的運行和統計
- 生成詳細的基準報告, 包括表格、圖形等
- 支持基準結果的持久化, 可以比較不同版本的性能
- 豐富的配置選項, 可以自定義基準測試的細節
一般我們在文章中看到的基準測試都是用這個框架做的
例子
測試dotnet中的 IsNullOrEmpty
和 IsNullOrWhiteSpace
, 具體代碼如下
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
BenchmarkRunner.Run(typeof(Test));
public class Test
{
[Benchmark] public void TestEmpty() => string.IsNullOrEmpty("");
[Benchmark] public void TestWhiteSpace() => string.IsNullOrWhiteSpace("");
}
寫好基準測試的例子後需要使用命令執行, 註意必須要在 Release
模式下運行
dotnet run -c Release
耐心等待執行完成, 期間輸出的東西都不需要細看, 直接看最後生成的表格
Method | Mean | Error | StdDev |
---|---|---|---|
TestEmpty | 0.0121 ns | 0.0123 ns | 0.0102 ns |
TestWhiteSpace | 1.7137 ns | 0.0306 ns | 0.0255 ns |