BenchmarkDotNet-Intro

来源:https://www.cnblogs.com/CollapseNav/archive/2023/10/09/17751518.html
-Advertisement-
Play Games

有些時候我們實現了某個功能, 但是僅僅通過有限的幾次調用無法知道這個功能的執行效率以及資源占用情況, 此時就可以使用 Benchmark 對這個功能進行基準測試 在 dotnet 中主要使用 BenchmarkDotNet BenchmarkDotNet 是一個.NET的基準測試框架, 主要用於測量 ...


有些時候我們實現了某個功能, 但是僅僅通過有限的幾次調用無法知道這個功能的執行效率以及資源占用情況, 此時就可以使用 Benchmark 對這個功能進行基準測試

dotnet 中主要使用 BenchmarkDotNet

benchmarkdotnet

BenchmarkDotNet 是一個.NET的基準測試框架, 主要用於測量.NET程式的性能

它可以幫助開發者編寫基準測試, 並自動運行這些測試, 生成詳細的基準報告

BenchmarkDotNet 的主要功能包括:

  • 簡化基準測試的編寫, 通過屬性來標記要測試的方法
  • 支持多種基準測試模式, 如平均時間、記憶體分配等
  • 自動進行基準測試的運行和統計
  • 生成詳細的基準報告, 包括表格、圖形等
  • 支持基準結果的持久化, 可以比較不同版本的性能
  • 豐富的配置選項, 可以自定義基準測試的細節

一般我們在文章中看到的基準測試都是用這個框架做的

例子

測試dotnet中的 IsNullOrEmptyIsNullOrWhiteSpace, 具體代碼如下

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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 配置文件中的敏感信息,如密碼,賬號這些都應該是秘文的,在程式獲取時,再將它們動態解密,這樣保證了配置信息的安全;在springboot中,有個resources\META-INF\spring.factories文件,他幫我們完成了自動裝配,開發過starter包的同學應該不會陌生,而在這個文件里, ...
  • 直方圖,又稱質量分佈圖,用於表示數據的分佈情況,是一種常見的統計圖表。 一般用橫軸表示數據區間,縱軸表示分佈情況,柱子越高,則落在該區間的數量越大。構建直方圖時,首先首先就是對數據劃分區間,通俗的說即是劃定有幾根柱子(比如,1980年~2020年的數據,每5年劃分一個區間的話,共8個區間)。接著,對 ...
  • 本節將向讀者介紹如何使用鍵盤滑鼠操控模擬技術,鍵盤滑鼠操控模擬技術是一種非常實用的技術,可以自動化執行一些重覆性的任務,提高工作效率,在Windows系統下,通過使用各種鍵盤滑鼠控制函數實現動態捕捉和模擬特定功能的操作。有時我們經常需要進行重覆性的滑鼠操作,例如繁瑣的點擊、拖拽。這些任務可能消耗大量... ...
  • 基於java應急救援物資管理系統設計與實現,可適用於java物資系統,java物資救援管理系統,springboot應急救援物資管理系統,java物資分配管理系統,javaWeb應急救援物資管理系統設計與實現,物資進銷存管理系統,物資入庫出庫管理系統,物資申領系統等等 ...
  • 9. 用Rust手把手編寫一個wmproxy(代理,內網穿透等), HTTP2改造篇之HPACK示例, 瞭解http2頭信息如何處理 項目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy github: https://github.com/ti ...
  • 本次問題是想要拷貝文件夾,但是找了一圈發現只有File有Copy或者FileInfo的CopyTo,並沒有Directory的拷貝操作方法。 針對C#中拷貝文件夾的方法就是先生成一個目標文件夾(destinationFolder)再將(soursefolder)中的文件依次拷貝到目標文件夾中,C#並 ...
  • 客戶端: 在UGUI中創建兩個Button,一個是連接伺服器,一個是發送消息的按鈕,分別綁定Connection和SendMessage兩個函數 並且創建一個InputField和一個Text文本,Text文本用於顯示伺服器回傳的消息,InputField用於輸入要發送的消息 以下是代碼: 1 us ...
  • 異常捕獲 使用異常捕獲可以捕獲出現異常的代碼塊,防止因為異常拋出造成的程式卡死的情況發生。 try{}catch{}finally{}結構 //異常捕獲 try { string str=Console.ReadLine(); int i=int.Parse(str); Console.WriteL ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...