BenchmarkDotNet簡(jiǎn)易入門指南

BenchmarkDotNet簡(jiǎn)易入門指南
使用方法總結(jié):
Class
- MemoryDiagnoser:查看內(nèi)存分配情況(有一個(gè)bool參數(shù),表示是否顯示GC的情況)
- SimpleJob:可以設(shè)置如 RuntimeMoniker.Net60
- Orderer(SummaryOrderPolicy.SlowestToFastest):輸出結(jié)果的排序
- RankColumn:為結(jié)果表格添加一列 Rank,表示當(dāng)前行的方法的排名
Method
- Benchmark:表示這個(gè)方法需要被測(cè)試(另有一個(gè) Baseline 參數(shù),同時(shí)會(huì)給結(jié)果添加一列 Ratio,表示和 Baseline 的比率)
- Arguments:類似于 Params,表示該方法的傳參,可以有多個(gè),并且會(huì)和 Params 聯(lián)動(dòng),充分考慮各種組合
- GlobalSetup:全局初始化,常用于初始化一個(gè)要用來(lái)測(cè)試的變量、集合等??梢院?Params 聯(lián)動(dòng),比如數(shù)組的容量由某個(gè)字段決定
- IterationSetup:用于在每次迭代前的初始化,每次迭代都會(huì)調(diào)用一次
Field
- Params:某個(gè)字段可能有不同的值(如果多個(gè)字段被標(biāo)記該特性,則會(huì)充分考慮所有參數(shù)的組合)
?
注意事項(xiàng):
1、要使用有編譯器優(yōu)化的 Release 模式;
2、被測(cè)試的類、使用了特性的方法與字段均需要為 public;
3、在要測(cè)試的方法中盡量避免會(huì)被 JIT 優(yōu)化掉的情況,比如有一個(gè)不會(huì)被使用的變量等;
4、除非還想要測(cè)試內(nèi)存讀取的速度等,否則一般沒(méi)有必要?jiǎng)?chuàng)建過(guò)大的數(shù)組。
標(biāo)簽: