本文内容总结于 字节跳动青年训练营 第五届后端组

Go自带了一些性能测试工具,其中BenchMark是较为重要的一个。
我们以计算斐波那契数列的示例来展示BenchMark的使用

package Benchmarkimport "testing"func Fib(n int) int {if n < 2 {return n}return Fib(n-1) + Fib(n-2)
}// from fib_test.go
func BenchmarkFib(b *testing.B) {// 运行Fib 函数b.N次for n := 0; n < b.N; n++ {Fib(10)}
}

其中func BenchmarkFib()为测试函数,传入的参数为b *testing.B,当运行Benchmark基准测试的时候,BenchMark会抓取参数为 *testing.B的函数进行测试

  1. 基准测试代码文件必须是_test.go结尾,和单元测试一样;
  2. 基准测试的函数以Benchmark开头;
  3. 参数须为 *testing.B;
  4. 基准测试函数不能有返回值;
  5. b.N是基准测试指定的循环次数,不能由用户指定

然后使用命令行输入:

go test -bench=. -benchmem -count=3

其中go test用于启动测试,使用-bench指明启动的是基准测试,并且-bench=也用于指明测试的是什么函数,-bench=.的意思是测试所有Bench函数。 -benchmem用于指明基准测试的内存相关设置,现在暂时不使用。-count=3指明运行多少个基准测试。

运行结果如下

其中:

  • BenchmarkFib-8 为测试的函数名
  • 第二列表示基准测试进行了多少次测试,这就是b.N的值
  • 第三列表示每次执行花费了多少时间
  • 第四列表示每次执行需要多少内存
  • 第五列表示每次执行申请了多少次内存

【青训营】Go的BenchMark的使用相关推荐

  1. 字节青训营第三课之高质量编程与性能调优实战的笔记和总结

    这是字节青训营第三课:高质量编程与性能调优实战的笔记和总结 概要 准备 尝试使用 test 命令,编写并运行简单测试 尝试使用 -bench参数,对函数进行性能测试 推荐阅读Go代码Review建议. ...

  2. HTML+CSS实现按钮手风琴效果 | 青训营笔记

    HTML+CSS实现按钮手风琴效果 | 青训营笔记 需求描述 HTML部分 CSS部分 完整代码 效果展示 这是我参与「第四届青训营」笔记创作活动的的第7天. 需求描述 实现一排居中的五个图标,默认为 ...

  3. 字节青训营抖音APP

    You just work hard, the rest is up to time GitHub地址:https://github.com/xiaodainiao/TikTokLite TikTok ...

  4. EXPER LOG | 作为ByteDance青训营-客户端-项目leader的历程和收获

    ~此处为记录2022SUMMER青训营,我担任项目组长时,在团队协作,项目任务分配,规则商议协定以及收获心得 ~还在更新中 极简tiktok内容介绍: 榜单模块(主页面一) 榜单页面设计 历史数据查询 ...

  5. 【Go入门】Socks5代理服务器实现 翻译api调用 | 青训营笔记

    这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记. [课程一]Go基础 主要内容 第一节课主要介绍了go的语法基础,包括变量.循环分支.数组切片.函数方法.错误处理.字符串.格式化处理. ...

  6. 字节青训营第一课之go语言入门的笔记和总结

    有幸参加了字节跳动举办的青训营活动,主要是go语言的编程实践,我将会整理课程的笔记和总结,欢迎关注! 1Go语言简介 由于Go语言有语法简单.高性能等特点,因此国内外各大公司如谷歌.腾讯.字节等都在使 ...

  7. Go语言上手(一) | 青训营笔记

    这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记. 文章目录 语法速览 基础语法 第一:类型 第二:内置库部分 json库的使用 时间库的使用 字符串和数字互转 os相关信息 实战项目 ...

  8. 字节跳动青训营笔试题解

    文章目录 前言 一.单选题 二.多选题 三.编程题 T1.旋转数组最大值 题目 思路 代码 T2.社交圈 题目 思路 代码 四.简答题 题目 思路 前言 第五届字节跳动青训营-后端专场笔试题解,简单做 ...

  9. 三个小项目入门Go语言|字节青训营笔记

    前言 这是青训营的第一课,今天的课程比较快速的讲解了go语言的入门,并配合三个小的项目实践梳理所学知识点,这里详细回顾一下这三个项目,结合课后作业要求做一些代码补充,并附上自己的分析,青训期间的所有课 ...

  10. Go语言实战案例 | 青训营笔记

    这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天 前言 在上一篇笔记中,已经总结了 Go 语言的基础语法和一些常见标准库的使用方法,本文主要基于之前的基础,通过两个实战的例子对 Go 的基础语 ...

最新文章

  1. (传送门)JVM的GC日志的主要参数
  2. Python if控制流语句
  3. 《编写可测试的JavaScript代码》——1.4 小结
  4. bzoj2957:楼房重建
  5. jboss as安装配置_书评:JBoss AS 7:配置,部署和管理
  6. c语言 a 0,[整理]C语言中的a,a和a[0]
  7. 滴!你的“十三香”已发货,iPhone 13系列今日正式发售
  8. SAP澄清概念、理清思路、组织机构
  9. 华为和荣耀蓝牙耳机为什么那么贵?
  10. win11白屏死机怎么办 Windows11白屏死机的解决方法
  11. charles抓PC端的包
  12. html一排小标题怎么写,工作总结大标题小标题怎么写
  13. WP-2021绿盟杯-藏宝图
  14. 解决idea 拉取新项目没有maven窗口
  15. 自定义starter出现Unable to read meta-data for class 这样解决
  16. linux服务器硬盘修复,Linux服务器磁盘坏道怎么修复
  17. C#基础 uint,long,ulong,float,decimal 定义并初始化
  18. FBI 网站被入侵 ? 官方称是黑客在造谣
  19. 转:使用Python对音频进行频谱分析
  20. composer 安装配置下载时出现 [InvalidArgumentException] Could not find package等等问题解决方案

热门文章

  1. java常见log日志的使用方法详细解析
  2. 自定义Fx控件的捷径
  3. python3 列表推导式_Python3 之 列表推导式
  4. Python 数据类型判断
  5. TreeMap源代码精析(java版本)
  6. 谱聚类python代码_python中的谱聚类图
  7. 工作进入第六年,心还想往上走
  8. Ubuntu20.04 Openssl安装
  9. Android仿探探社交自定义闪聊动画效果
  10. 华为p50是鸿蒙系统,华为p50是鸿蒙系统吗