go benchmark 性能测试 单元测试 基准测试 使用方法详解
簡言
基準(zhǔn)測試是測量一個(gè)程序在固定工作負(fù)載下的性能
在Golang中,基準(zhǔn)測試函數(shù)以Benchmark為前綴并且?guī)в幸粋€(gè) *testing.B 類型的參數(shù)
規(guī)則
示例:(測試int轉(zhuǎn)string的SprIntf()函數(shù)的效率)
package test import ("fmt""testing" ) func BenchmarkTest1(b *testing.B) {for i := 0; i < b.N; i++ {_ = fmt.Sprintf("%d", i)} }實(shí)驗(yàn)結(jié)果如下圖(請注意紅框中的,比如文件名,函數(shù)名,測試命令):
測試結(jié)果分析:
1. BenchmarkTest1-4 表測試的函數(shù)名,-4 表示GOMAXPROCS(線程數(shù))的值為4
2. 10000000 表一共執(zhí)行了一千萬次,即B.N的值
3. 107 ns/op表平均每次操作花費(fèi)了107納秒
4. 16 B/op 表每次操作申請了16Byte的內(nèi)存申請
5. 2 allocs/op 表每次操作申請了2次內(nèi)存
參數(shù)介紹
1. ?參數(shù)-bench,它指明要測試的函數(shù);點(diǎn)字符意思是測試當(dāng)前所有以Benchmark為前綴函數(shù)
2. ?參數(shù)-benchmem,性能測試的時(shí)候顯示測試函數(shù)的內(nèi)存分配大小,內(nèi)存分配次數(shù)的統(tǒng)計(jì)信息
3. 參數(shù)-count n,運(yùn)行測試和性能多少此,默認(rèn)一次
PS:
有些時(shí)候在benchmark之前需要做一些準(zhǔn)備工作,并且,我們不希望這些準(zhǔn)備工作納入到計(jì)時(shí)里面,我們可以使用 b.ResetTimer(),代表重置計(jì)時(shí)為0,以調(diào)用時(shí)的時(shí)刻作為重新計(jì)時(shí)的開始
總結(jié)
以上是生活随笔為你收集整理的go benchmark 性能测试 单元测试 基准测试 使用方法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go语言 数组 map整体json
- 下一篇: golang 数组 切片 下标范围