跳到主要内容

如何编写 Go 语言的性能测试

· 阅读需 1 分钟
素明诚
Full stack development

testing 包

testing 包提供了一个专门用于性能测试的工具,称为基准测试(benchmarks)。基准测试函数以 Benchmark 开头,并接受一个 *testing.B 类型的参数。这个参数提供了控制测试运行的方法和属性,例如 b.N,它代表测试循环的次数。

示例代码

package main

import (
"encoding/json"
"github.com/bytedance/sonic"
)

type Student struct {
Name string
Age int
Gender string
}

type Class struct {
Id string
Students []Student
}

var (
s = Student{"张三", 18, "女"}
c = Class{
Id: "1年2班",
Students: []Student{s, s, s},
}
)
// Benchmark 开头
func
Json(b *testing.B) {
for i := 0; i < b.N; i++ {
bytes, _ := json.Marshal(c)
var c2 Class
json.Unmarshal(bytes, &c2)
}
}

func BenchmarkSonic(b *testing.B) {
for i := 0; i < b.N; i++ {
bytes, _ := sonic.Marshal(c)
var c2 Class
sonic.Unmarshal(bytes, &c2)
}
}

IDE 执行

44c617759eee959e35e5c76c15fb67df### 命令行执行

打开命令行或终端,在包含性能测试文件的目录下运行:

go test -bench=.

使用 -bench 参数可以指定要运行的基准测试。-bench=. 表示运行所有基准测试。