ToB企服应用市场:ToB评测及商务社交产业平台

标题: Go语言基准测试(benchmark)三部曲之一:基础篇 [打印本页]

作者: 刘俊凯    时间: 2023-11-28 07:49
标题: Go语言基准测试(benchmark)三部曲之一:基础篇
欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于基准测试(benchmark)

关于Go语言基准测试(benchmark)三部曲

本篇概览

环境信息

编码

  1. go mod init benchmark-demo
复制代码
  1. package main
  2. // 斐波拉契数列
  3. func fib(n int) int {
  4.         if n == 0 || n == 1 {
  5.                 return n
  6.         }
  7.         return fib(n-2) + fib(n-1)
  8. }
复制代码
最基本的基准测试



  1. func BenchmarkFib(b *testing.B) {
  2.         for n := 0; n < b.N; n++ {
  3.                 fib(30)
  4.         }
  5. }
复制代码
  1. go test -bench .
复制代码
  1. goos: windows
  2. goarch: amd64
  3. pkg: benchmark-demo
  4. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  5. BenchmarkFib-16              322           3653937 ns/op
  6. PASS
  7. ok      benchmark-demo  1.999s
复制代码
名称含义goos操作系统,这里是windowsgoarchCPU架构,这里是64位X86pkgpackage名,可以在测试的时候指定packagecpuCPU的信息,这里可以看到是12代酷睿i5
  1. go test -bench .
  2. goos: darwin
  3. goarch: arm64
  4. pkg: benchmark-demo
  5. BenchmarkFib-8                326           3647077 ns/op
  6. PASS
  7. ok          benchmark-demo        1.654s
复制代码
匹配规则



-cpu参数

  1. go test -bench='Fib$' -cpu=2 .  
  2. goos: windows
  3. goarch: amd64
  4. pkg: benchmark-demo
  5. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  6. BenchmarkFib-2               320           3692123 ns/op
  7. PASS
  8. ok      benchmark-demo  1.962s
复制代码
-benchtime参数

  1. goos: windows
  2. goarch: amd64
  3. pkg: benchmark-demo
  4. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  5. BenchmarkFib-16             3264           3668947 ns/op
  6. PASS
  7. ok      benchmark-demo  12.710s
复制代码
  1. go test -bench='Fib$' -benchtime=999x benchmark-demo
  2. goos: windows
  3. goarch: amd64
  4. pkg: benchmark-demo
  5. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  6. BenchmarkFib-16              999           3667776 ns/op
  7. PASS
  8. ok      benchmark-demo  4.006s
复制代码
-count参数

  1. go test -bench='Fib$' -benchtime=999x -count=2 benchmark-demo
  2. goos: windows
  3. goarch: amd64
  4. pkg: benchmark-demo
  5. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  6. BenchmarkFib-16              999           3656639 ns/op
  7. BenchmarkFib-16              999           3645846 ns/op
  8. PASS
  9. ok      benchmark-demo  7.709s
复制代码
并行测试

  1. func BenchmarkParallelFib(b *testing.B) {
  2.         b.RunParallel(func(pb *testing.PB) {
  3.                 for pb.Next() {
  4.                         fib(30)
  5.                 }
  6.         })
  7. }
复制代码
  1. go test -bench='^Benchmark' benchmark-demo      
  2. goos: windows
  3. goarch: amd64
  4. pkg: benchmark-demo
  5. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  6. BenchmarkFib-16                      368           3362756 ns/op
  7. BenchmarkParallelFib-16             3134            370352 ns/op
  8. PASS
  9. ok      benchmark-demo  3.189s
复制代码
  1. go test -bench='^Benchmark' -cpu=8 benchmark-demo
  2. goos: windows
  3. goarch: amd64
  4. pkg: benchmark-demo
  5. cpu: 12th Gen Intel(R) Core(TM) i5-1240P
  6. BenchmarkFib-8                       356           3352500 ns/op
  7. BenchmarkParallelFib-8              1989            582177 ns/op
  8. PASS
  9. ok      benchmark-demo  3.211s
复制代码
欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4