日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

go benchmark 性能测试 单元测试 基准测试 使用方法详解

發(fā)布時(shí)間:2024/2/28 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go benchmark 性能测试 单元测试 基准测试 使用方法详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡言

基準(zhǔn)測試是測量一個(gè)程序在固定工作負(fù)載下的性能

在Golang中,基準(zhǔn)測試函數(shù)以Benchmark為前綴并且?guī)в幸粋€(gè) *testing.B 類型的參數(shù)

規(guī)則

  • 基準(zhǔn)測試的代碼文件必須以_test.go結(jié)尾
  • 基準(zhǔn)測試的函數(shù)必須以Benchmark開頭
  • 基準(zhǔn)測試函數(shù)必須接受一個(gè)指向Benchmark類型的指針作為唯一參數(shù),即比如func BenchmarkMapkeys1(b *testing.B)
  • 基準(zhǔn)測試函數(shù)不能有返回值
  • b.ResetTimer是重置計(jì)時(shí)器,這樣可以避免for循環(huán)之前的初始化代碼的干擾
  • 最后的for循環(huán)很重要,被測試的代碼要放到循環(huán)里
  • b.N是基準(zhǔn)測試框架提供的,表示循環(huán)的次數(shù),因?yàn)樾枰磸?fù)調(diào)用測試的代碼,才可以評估性能
  • 不要修改b.N,因?yàn)榛鶞?zhǔn)測試是很智能的,它會自動(dòng)根據(jù)你要測試函數(shù)的運(yùn)行時(shí)間動(dòng)態(tài)調(diào)整該值
  • b.N 從 1 開始,如果基準(zhǔn)測試函數(shù)在1秒內(nèi)就完成 (默認(rèn)值),則 b.N 增加,并再次運(yùn)行基準(zhǔn)測試函數(shù)。b.N 在近似這樣的序列中不斷增加;1, 2, 3, 5, 10, 20, 30, 50, 100,1000,20000?等等。 基準(zhǔn)框架試圖變得聰明,如果它看到當(dāng)b.N較小而且測試很快就完成的時(shí)候,它將讓序列增加地更快
  • 示例:(測試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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。