使用benchstat可以科学对比go语言基准测试的性能差异,先通过go test -bench多次运行生成旧版本和新版本的基准数据文件,再用benchstat工具分析两者差异,其输出中的delta表示性能变化百分比,p值判断差异显著性(p
在Go语言开发中,基准测试(Benchmark)是评估代码性能的重要手段。当我们修改代码后,需要判断性能是否有提升或退化,这时单纯看单次
go test -bench
benchstat
下面介绍如何使用
benchstat
首先确保你有有效的基准测试函数,例如:
立即学习“go语言免费学习笔记(深入)”;
func BenchmarkHello(b *testing.B) { for i := 0; i < b.N; i++ { fmt.Sprintf("hello %d", i) } }
然后运行基准测试,并将结果输出为文件:
# 旧版本代码的基准测试 go test -bench=Hello -count=5 > old.txt # 修改代码后,运行新版本 go test -bench=Hello -count=5 > new.txt
-count=5
benchstat
go install golang.org/x/perf/cmd/benchstat@latest
确保
$GOPATH/bin
PATH
benchstat
运行以下命令查看对比:
benchstat old.txt new.txt
输出示例:
name old time/op new time/op delta Hello-8 10.2ns ± 2% 9.5ns ± 3% -6.85% (p=0.000 n=5+5)
关键字段解释:
old time/op
new time/op
delta
p=
n=5+5
如果 p 值较大(如 p > 0.05),说明性能变化可能只是随机波动,无实际差异。
-count=10
benchstat
alloc/op
allocs/op
例如输出包含:
name old alloc/op new alloc/op delta Hello-8 16B ± 0% 8B ± 0% -50.00%
说明内存分配减少了一半,是明显的优化。
如果你有多个基准函数,可以用通配符运行并对比:
go test -bench=. -count=5 > old_all.txt # 修改代码后 go test -bench=. -count=5 > new_all.txt benchstat old_all.txt new_all.txt
输出会列出所有函数的对比,方便整体评估性能变化。
虽然
benchstat
benchcmp
benchstat
基本上就这些。
benchstat
benchstat
以上就是Golang基准测试对比怎么做 使用benchstat工具分析差异的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号