blog
blog copied to clipboard
benchmark 基准测试 | Go 语言高性能编程 | 极客兔兔
https://geektutu.com/post/hpg-benchmark.html
Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。详细介绍如何测试/评估 Go 代码的性能,内容包括使用 testing 库进行基准测试(benchmark),性能分析(profiling) 编译优化(compiler optimisations),内存管理(memory management)和垃圾回收(garbage collect)、pprof 等内容。同时也介绍了使用 Go 语言如何写出高性能的程序和应用,包括不限于 Go 语言标准库、第三方库的使用方式和最佳实践。
每天学到一点,不断进步
总结:
- 进行性能测试时,尽可能保持测试环境的稳定
- 实现 benchmark 测试
• 位于_test.go文件中
• 函数名以Benchmark开头
• 参数为b *testing.B
•b.ResetTimer()可重置定时器
•b.StopTimer()暂停计时
•b.StartTimer()开始计时 - 执行 benchmark 测试
•go test -bench .执行当前测试
•b.N决定用例需要执行的次数
•-bench可传入正则,匹配用例
•-cpu可改变 CPU 核数
•-benchtime可指定执行时间或具体次数
•-count可设置 benchmark 轮数
•-benchmem可查看内存分配量和分配次数
$ go test -bench='Fib$' -benchtime=50x .
goos: darwin
goarch: amd64
pkg: example
BenchmarkFib-8 50 6187485 ns/op
PASS
ok example 6.330s
请问这个的每次运行时间是 0.06s是怎么算出来的啊,6187485是0.006秒啊 6.33/50也不对啊
@jieqiyue
$ go test -bench='Fib$' -benchtime=50x . goos: darwin goarch: amd64 pkg: example BenchmarkFib-8 50 6187485 ns/op PASS ok example 6.330s请问这个的每次运行时间是 0.06s是怎么算出来的啊,6187485是0.006秒啊 6.33/50也不对啊
这里文中算错了一位,6187485 ns = 6.1ms = 0.006s
@jieqiyue
$ go test -bench='Fib$' -benchtime=50x . goos: darwin goarch: amd64 pkg: example BenchmarkFib-8 50 6187485 ns/op PASS ok example 6.330s请问这个的每次运行时间是 0.06s是怎么算出来的啊,6187485是0.006秒啊 6.33/50也不对啊
6.33秒是加上了手动3秒的暂停的