ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Go-Benchmark基准测试实战从入门到性能回归检测

Go-Benchmark基准测试实战从入门到性能回归检测 Go-Benchmark基准测试实战从入门到性能回归检测文章导语“这段代码快不快”——Benchmark给你量化答案。Go内置的testing.B提供了强大的基准测试框架。本文覆盖Benchmark的编写、分析和CI集成。一、编写基准测试funcBenchmarkStringConcat(b*testing.B){b.ReportAllocs()fori:0;ib.N;i{s:forj:0;j100;j{sx}}}// go test -bench. -benchmem// 输出// BenchmarkStringConcat-8 50000 35000 ns/op 5000 B/op 100 allocs/op二、比较型基准测试funcBenchmarkAppend_NoPrealloc(b*testing.B){fori:0;ib.N;i{vars[]intforj:0;j1000;j{sappend(s,j)}}}funcBenchmarkAppend_Prealloc(b*testing.B){fori:0;ib.N;i{s:make([]int,0,1000)forj:0;j1000;j{sappend(s,j)}}}三、CI中的性能回归检测# benchstat比较两次基准测试gotest-bench.-count10old.txt# ...修改代码...gotest-bench.-count10new.txt benchstat old.txt new.txt四、全文总结-benchmem查看内存分配benchstat对比性能变化ResetTimer排除初始化时间CI中每次PR自动运行基准测试。参考文献Go testing包文档golang.org/x/perf/cmd/benchstatDave Cheney - Benchmarking Go
返回列表