Go基准测试Benchmark

Go语言自带了一个强大的测试框架,其中包括基准测试(Benchmark)功能,基准测试用于测量和评估一段代码的性能。

我们可以通过在Go的测试文件中编写特殊格式的函数来创建基准测试。测试文件的命名遵守原函数名称_test.go 的格式。

基准测试函数的名字必须以"Benchmark"开头,后面跟着的是想要命名的测试名字,函数的唯一参数是一个指向*testing.B的指针。例如:

go 复制代码
func BenchmarkMyFunction(b *testing.B) {
    for i := 0; i < b.N; i++ {
        // 执行你想要测试性能的代码
    }
}

在基准测试函数中,将想要测试的代码放在一个针对b.N的循环中。b.N是一个非常大的数,Go测试框架会自动调整它的值,以使得基准测试函数运行的时间足够长,从而得到更准确的结果。

通过在命令行中运行go test -bench=.来执行基准测试。-bench标志后面跟着的是一个正则表达式,匹配你想要运行的基准测试函数的名字,. 表示匹配所有文件。

shell 复制代码
go test -bench=.

基准测试结果会显示每次操作的平均时间,可以通过这个结果来评估你的代码的性能,或者对比不同版本或不同实现的性能差异。

范例:

go 复制代码
func BenchmarkTest(b *testing.B) {
	str := ""
	for i := 0; i < b.N; i++ {
		str += "a"
	}
}

输出:

shell 复制代码
goos: darwin
goarch: arm64
pkg: awesomeProject3
BenchmarkTest
BenchmarkTest-12    	 1000000	     28001 ns/op
PASS
  • goos: darwin:基准测试运行操作系统
  • goarch: arm64:基准测试运行的处理器架构
  • pkg: awesomeProject3:基准测试运行在的 Go 包
  • BenchmarkTest:基准测试函数名
  • BenchmarkTest-12:基准测试及其并行度。这里是在并行度为 12 的情况下运行。
  • 1000000:基准测试函数运行次数
  • 28001 ns/op:每次运行基准测试函数需要的时间,单位是纳秒。这里是为 28001 纳秒,即 0.028001 毫秒。
  • PASS:表示基准测试通过
相关推荐
whcyhhh4 分钟前
头歌实践教学平台:数据科学与大数据技术导论(十八4)
大数据·开发语言·python
65岁退休Coder14 分钟前
LangGraph v1.2.9 核心概念 & 流程控制
后端·python·langchain
z落落30 分钟前
C# Modbus-RTU 串口读写设备+CRC16+邮件告警
开发语言·c#
DS随心转小程序32 分钟前
Gemini只能导出了一部分Word文档,很少的一部分,不是我这个窗口所有的对话内容?
开发语言·人工智能·c#·word·豆包·deepseek·ai导出鸭
江畔柳前堤34 分钟前
消息队列:从直觉到精通的完整认知地图
开发语言·人工智能·算法·机器学习·ruby on rails·scala
程序员鱼皮35 分钟前
爆火的《牛来》模型正式发布!DeepSeek 的排名又下降了。。
前端·后端·ai编程
圣殿骑士-Khtangc38 分钟前
Go-sync包并发原语详解从Mutex到Once的深度应用
golang
格林威41 分钟前
C# 相机图像配合频闪光源:实现高速稳定拍摄的几个方法
开发语言·网络·人工智能·数码相机·计算机视觉·c#·视觉检测
灯澜忆梦43 分钟前
【基于GO的Web开发15】gin路由和路由组
前端·后端·golang·gin
陈老老老板1 小时前
2026 Web Scraping 教程:用 Codex + Bright Data 构建 Agent 原生数据采集流程
后端