C 標準效能測試

2021-08-20 20:18:16 字數 2711 閱讀 4830

經常我寫乙個類,作為乙個工具類,小夥伴會問我這個類的效能,這時我就需要乙個標準的工具進行測試。

現在在 github 提交**,如果有小夥伴想要知道某個函式的效能,就會用 benchmarkdotnet 進行測試。

例如我有乙個函式 stooter ,我定義這個函式的效能是非常高,我需要告訴大家在什麼的裝置執行,但是因為每個人的寫法不一樣,所以就比較難看。而且誰也不知道你是如何測試,也許使用 stopwatch 或 datetime 來測試。

但是在 github 經常可以看到下面的測試

benchmarkdotnet=v0.10.14, os=windows 10.0.17134

intel core i7-6700 cpu 3.40ghz (skylake), 1 cpu, 8 logical and 4 physical cores

.net core sdk=2.1.201

[host] : .net core 2.0.7 (coreclr 4.6.26328.01, corefx 4.6.26403.03), 64bit ryujit [attacheddebugger]

defaultjob : .net core 2.0.7 (coreclr 4.6.26328.01, corefx 4.6.26403.03), 64bit ryujit

1 2

3 4

5 6

7 8

method mean error stddev

stooter 384.6 ns 7.687 ns 9.721 ns

這就是使用工具 benchmarkdotnet 進行測試。

下面讓我告訴大家如何入門 benchmarkdotnet 進行測試。

首先通過 nuget 安裝 benchmarkdotnet ,推薦使用命令列安裝的方法,因為visualstudio的速度太慢

install-package benchmarkdotnet

1 先來寫乙個被測試的函式

public class foo

}} 1 2

3 4

5 6

7 8

9 10

11 12

13 14

1 2

3 4

5 6

7 8

9 10

11 12

13 在被測試的函式上面加上特性 benchmark ,注意引用using benchmarkdotnet.attributes才可以這樣寫

函式用了 span ,請看c# span 入門

現在可以在 main 函式使用下面**進行測試

var bokar = benchmarkrunner.run();
1

2 1

注意需要引用using benchmarkdotnet.running,並且在 release 執行

執行的時候就可以看到顯示很多測試,而且從輸入的資料夾還可以找到這樣的檔案,這個檔案放在 $(bin)release\$(targetframework)\benchmarkdotnet.artifacts\ 資料夾,直接開啟就可以找到

這時看到的就是標準的測試,可以把這個測試告訴小夥伴

那麼這個輸出**是什麼意思,例如測試了 csdn 方法,這時的輸出**請看下面

method mean error stddev

csdn 384.6 ns 7.687 ns 9.721 ns

mean 的意思是 arithmetic mean of all measurements 所有測量的算術平均值

error 的意思是 half of 99.9% confidence interval 99.9% 一半的置信度區間

stddev 是所有測量的標準偏差

在測試過程包括

pilot: 決定執行幾次。

idlewarmup, idletarget:評估benchmarkdotnet這個工具帶來的額外開銷。

mainwarmup:測試熱身。

maintarget:測試。

result:測試結果減去benchmarkdotnet帶來的額外開銷。

除了方法可以測試,靜態方法也可以測試,使用方法和上面一樣

public class foo

}} 1 2

3 4

5 6

7 8

9 10

11 12

13 14

1 2

3 4

5 6

7 8

9 10

11 12

13 如果在執行出現下面輸出,那麼請檢查是否在 release 執行,右擊專案屬性看是否開啟優化**

validating benchmarks:

assembly merrear which defines benchmarks is non-optimized

benchmark was built without optimization enabled (most probably a debug configuration). please, build it in release

1 2

3 參見:.net core效能測試元件benchmarkdotnet 支援.net framework mono - linezero -

用benchmarkdotnet給c#程式做效能測試

效能測試標準

1.cpu利用率小於40 2.記憶體占用小於80 3.processor queue length小於2 4.response time小於1s 5.吞吐量throughtput大於90 6.業務執行的平均響應時間 期望值 15s 1.吞吐量 單位時間內網路傳輸資料量 2.衝突率 在乙太網上監測到的...

Jmeter效能測試 標準效能測試場景設計

如何設計測試場景是效能測試中比較關鍵的內容。在效能測試領域有幾個教科書一樣的場景設計方法,放之四海而皆準 目的單業務基準測試是在伺服器沒有壓力的情況下,獲取單筆業務的處理時間,為後續調優提供資料依託 策略jmeter中設定為單個執行緒迭代n次 如100 取平均響應時間。一般情況下我們不需要監控硬體資...

效能測試通過標準

對於效能測試,在測試過程中需要通過觀察一些目標,根據這些目標的結果來判斷是否滿足要求,主要包含如下 業內對於效能測試有一些通用的通過標準,這裡給出乙個web專案效能測試通過標準,作為樣板 基本都遵循2 5 10,2s以內最佳 說明 另外需要強調的是,每個專案對於是否通過的標準不盡相同,實際執行中,優...