性能测试通过go test -bench=.执行,输出包含每次操作耗时、内存分配等关键指标。示例中BenchmarkSum-8表示GOMAXPROCS为8,5000000次循环,每次耗时250纳秒。使用-benchtime可延长测试时间提升精度,-benchmem可显示内存分配情况。通过命名不同算法版本可横向对比性能,如循环求和400 ns/op,公式法仅30 ns/op,性能提升显著。编写测试时应避免无关代码干扰,合理使用b.ResetTimer()、b.StopTimer()等控制计时,结合-count=3多次运行确保结果稳定。

Go语言内置的
testing
go test -bench=.
假设我们对一个整数求和函数进行性能测试:
// sum.go执行命令:
go test -bench=.
典型输出:
立即学习“go语言免费学习笔记(深入)”;
BenchmarkSum-8 5000000 250 ns/op含义解析:
为获得更稳定的结果,可使用
-benchtime
输出可能变为:
BenchmarkSum-8 20000000 248 ns/op说明在5秒内执行了2000万次,平均每次248纳秒,数据更具参考价值。
若需内存分配分析,添加
-benchmem
输出增加两列:
BenchmarkSum-8 5000000 250 ns/op 0 B/op 0 allocs/op其中:
这两项对识别性能瓶颈(如频繁GC)非常关键。
当实现多个版本算法时,可通过命名区分并对比:
func BenchmarkSumForRange(b *testing.B) { ... }运行测试后输出:
BenchmarkSumForRange-8 3000000 400 ns/op可见数学公式法显著优于循环,性能提升约13倍。
编写可靠性能测试需注意:
b.N
b.ResetTimer()
b.StopTimer()
b.StartTimer()
-count=3
基本上就这些。Go的性能测试机制简洁高效,配合合理设计的基准用例,能快速定位性能问题并验证优化效果。
以上就是Golang性能测试结果输出与分析示例的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号