美文网首页
GO Benchmarking-基准测试

GO Benchmarking-基准测试

作者: quanCN | 来源:发表于2021-09-18 15:55 被阅读0次

    简介

    基准测试是一种测试代码性能的方法。想要测试解决同一问题的不同方案的性能,以及查看哪种解决方案的性能更好时,基准测试就会很有用。基准测试也可以用来识别某段代码的CPU或者内存效率问题,还可以用基准测试来测试不同的并发模式,或者用基准测试来辅助配置工作池的数量,以保证能最大化系统的吞吐量。
    文档
    youtube

    前言

    go中数值转字符串有多种方式,例如

    • fmt.Sprintf()
    • strconv.FormatInt()
    • strconv.Itoa()

    例子

    func BenchmarkSprintf(b *testing.B) {
        number := 10
        b.ResetTimer()
        for i := 0; i < b.N; i++ {
            fmt.Sprintf("%d",number)
        }
    }
    

    基准测试的格式应该为func BenchmarkXxx(*testing.B)

    • 运行
      go test -bench="BenchmarkSprintf" -run="none" -benchtime="3s" -benchmem
      • -bench
        只有在提供bench标签时才会被认为是进行基准测试
      • -run="none"
        来保证在运行制订的基准测试函数之前没有单元测试会被运行
      • -benchtime
        更改测试执行的最短时间,默认为一秒
      • -benchmem
        可以提供每次操作分配内存的次数,以及总共分配的字节数

    完整代码

    • main_test.go
      package main
      
      import (
          "fmt"
          "strconv"
          "testing"
      )
      
      func BenchmarkSprintf(b *testing.B) {
          number := 10
          b.ResetTimer()
          for i := 0; i < b.N; i++ {
              fmt.Sprintf("%d", number)
          }
      }
      
      func BenchmarkFormatInt(b *testing.B) {
          number := int64(10)
          b.ResetTimer()
          for i := 0; i < b.N; i++ {
              strconv.FormatInt(number, 10)
          }
      }
      
      func BenchmarkItoa(b *testing.B) {
          number := 10
          b.ResetTimer()
          for i := 0; i < b.N; i++ {
              strconv.Itoa(number)
          }
      }
      
    • 执行基准测试
      go test -bench=. -run="none" -benchtime="3s" -benchmem

    相关文章

      网友评论

          本文标题:GO Benchmarking-基准测试

          本文链接:https://www.haomeiwen.com/subject/fgcygltx.html