前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go学习_21_Golang代码性能检测Benchmark

Go学习_21_Golang代码性能检测Benchmark

原创
作者头像
码农帮派
发布2020-04-20 15:13:40
5950
发布2020-04-20 15:13:40
举报
文章被收录于专栏:码农帮派码农帮派

Golang的testing包中除了单元测试testing.T之外,还提供了testing.B的Benchmark性能测试,Benchmark测试主要是通过测试CPU和内存的效率,来评估测试代码的性能,与单元测试一样,我们首先需要引入testing包,go的文件需要以_test结尾

下面我们使用Benchmark测试一下字符串连接的性能:

  1. 第一种:使用+进行字符串的连接
  2. 第二张:使用bytes.Buffer实现字符串的连接

需要注意的是,Benchmark的性能测试要求每个被测试的方法以Benchmark开头:

我们创建go测试文件concat_string_test.go文件:

通过命令开始测试代码性能:

代码语言:javascript
复制
go test -bench=. 

运行结果:

从上面的Benchmark测试结果可以看到,使用bytes.Buffer进行字符串的连接性能更高,大约是前一种方法(使用+进行字符串连接)的三倍。

【注意】上面的命令 -bench=. 将会运行测试文件中所有Benchmark开头的函数。

要是需要详细分析方法的性能,可以使用 -benchmem:

代码语言:javascript
复制
go test -bench=. -benchmem 

运行结果:

我们可以看到-benchmem提供的测试数据多了两行,除了单词运行的速度之外,后面两列数据分别是每次运行分配的内存的字节数,以及每次运行分配内存的次数。从上面的测试结果可以看到,比较慢的方法内存分配的次数比较多。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档