go 基准测试初体验

基准测试(Benchmark)是Go语言中用于衡量代码性能的重要工具。通过编写基准测试函数,并使用testing.B提供的方法来记录执行时间和其他指标,我们可以准确地评估代码的性能表现。在开发过程中,合理使用基准测试可以帮助我们优化代码,提升程序的性能。本文将详细介绍Go的基准测试的基础用法,并通过案例说明如何编写和运行基准测试。

一、基准测试的概念

基准测试是一种用于衡量代码性能的测试方法。它通过多次运行同一个函数或代码块,并统计执行时间和内存消耗等指标,来评估代码的性能表现。

二、编写一个基准测试代码

package main
 import (
	"testing"
)
func Fibonacci(n int) int {
	if n <= 1 {
		return n
	}
	return Fibonacci(n-1) + Fibonacci(n-2)
}
func BenchmarkFibonacci(b *testing.B) {
	for i := 0; i < b.N; i++ {
		Fibonacci(20)
	}
}

上面是一个典型的基准测试代码,我们定义了Fibonacci函数用于计算斐波那契数列。然后,我们编写了BenchmarkFibonacci函数作为基准测试函数。执行go test -bench=.得到如下结果

goos: darwin
goarch: arm64
pkg: test/man
BenchmarkFibonacci-8       49478             22266 ns/op
PASS
ok      test2/man/test  2.048s

三、解读测试结果

在上面的示例代码中,我们得到了基准测试的结果,现在我们就这个来做一个基础的解读。

  • goos 操作系统
  • goarch CPU架构
  • pkg 包名
  • BenchmarkFibonacci-8 49478 22266 ns/op 8个cpu并行执行,平均执行一次需要22266纳秒,1秒之内可运行49478
  • PASS 表示所有的测试用例都通过了,没有发现错误。这意味着您的代码在测试过程中没有引发任何失败或错误。
  • ok 表示测试通过,没有发现错误。在基准测试结果中,通常会显示"ok",这是因为基准测试不会产生失败或错误的结果,只会提供性能指标
  • 2.048s 运行所有基准测试的总时间为2.149秒

这个基准测试的结果解读已经完成,我们可以根据该结果进行代码性能的评估和优化。当然,go基准测试还有丰富的参数可以选择,可以得到的信息也不止示例中显示的内容,后续的文章中,会一步一步详细介绍和解读。

四、注意事项

  1. 测试文件 基准测试代码文件必须是XXX_test.go结尾,通常XXX与对应的正式代码文件名称相同,但不是强制性的要求
  2. 函数签名 基准测试函数的命名必须以Benchmark开头,并接收一个*testing.B类型的参数。例如:
    func BenchmarkMyFunction(b *testing.B)
  1. 循环执行 基准测试函数中,我们需要使用b.N来指定要运行的次数。Go会根据系统情况生成,不用用户设定,循环体内的代码将会被执行b.N次,以获取准确的性能数据。
#go##golang##高并发#
高性能Golang编程 文章被收录于专栏

galang各种高性能编码姿势一网打尽!

全部评论

相关推荐

05-12 18:24
长安大学 UE4
因为是家里第一代大学生,报专业报学校都没人可以指导,只能自己看着来毕业找工作,父母只知道考公务员啊考教师啊,丝毫不考虑难度我说要去大城市打工才行,小县城对学历没有需求,开的工资都很低,两三千养活不了的结果都不同意我去大城市,觉得北上广深远,不稳定,一年到头不着家,养这么大孩子算白养了要我怎么办,不考公不考编就是死路一条呗,出去打工就是不孝呗可是考公考编也好难,考上也是小职员,到时候又变成了家里第一代体制内了,不还是样样靠自己有时候很羡慕同学,要去大城市打拼,家里都很支持去看看外面的世界也羡慕同学父母都是体制内的,考上还有所依靠家里没有办法给予帮助,简直是进入死胡同一样
Two_Shadow:你先拿到offer,路是自己走的,你真去了谁拦得住你呢,不用给自己扣帽子,我也是我家第一代大学生啊,农村人,高考96个志愿我就填50多个计算机,爸妈让我填满保底我说我不,我就学计算机,上大学了让我考研我说我不考,我就喜欢干活,现在签了offer,他们也释怀,不回家就努力提升自己,就往家里打钱,就开视频,还能怎么样呢,路是自己走的,他们只是希望你能走得好一点,但大部分父母,尤其是农村父母根本帮不了你什么,难道你就不走路了吗,希望能骂醒你,不要想太多做太少。
点赞 评论 收藏
分享
海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务