当前位置:   article > 正文

基准测试(benchmark)_基准函数测试

基准函数测试

简介

基准测试是一种测试代码性能的方法, 同时也可以用来识别某段代码的CPU或者内存效率问题. 许多开发人员会用基准测试来测试不同的并发模式, 或者用基准测试来辅助配置工作池的数量, 以保证能最大化系统的吞吐量

和单元测试的文件名一样, 基准测试的文件名也必须以“_test.go”结尾. 另外, 基准测试函数必须以Benchmark开头, 接受一个指向testing.B类型的指针作为唯一参数. 

实战

题目:比较Golang标准库里3种将整数转为字符串的性能。

  1. package benchmark_test
  2. import (
  3. "fmt"
  4. "strconv"
  5. "testing"
  6. )
  7. func BenchmarkSprintf(b *testing.B) {
  8. b.ResetTimer()
  9. number := int64(10)
  10. for i := 0; i < b.N; i++ {
  11. fmt.Sprintf("%d", number)
  12. }
  13. }
  14. func BenchmarkItoa(b *testing.B) {
  15. b.ResetTimer()
  16. number := 10
  17. for i := 0; i < b.N; i++ {
  18. strconv.Itoa(number)
  19. }
  20. }
  21. func BenchmarkFormat(b *testing.B) {
  22. b.ResetTimer()
  23. number := int64(10)
  24. for i := 0; i < b.N; i++ {
  25. strconv.FormatInt(number, 10)
  26. }
  27. }

运行结果:

从运行结果看, sprintf执行了5kw次, 平均一次要105ns; itoa执行了10亿次, 平均一次要5.64ns, formatInt执行了20亿次, 平均每次要3.73ns. 

参数介绍:

-bench=. 表示希望运行所有的基准测试函数, 也可以指定基准测试名字, 如-bench="BenchmarkFormat", 并且支持表达式;

-benchtime="3s" 表示每个基准测试函数持续3s;

-benchmem提供每次操作分配内存的次数(如2 allocs/op), 以及每次操作分配的字节数(16B/op). 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/700377
推荐阅读
  

闽ICP备14008679号