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

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. c#链接操作mysql数据库代码_c#连接mysql数据库 代码
  2. 记录一下python绘制地图
  3. colease函数 mysql_SqlConnection 概述
  4. git push error. ! [rejected] master - master (non-fast-forward)
  5. 【控制】《多无人机协同控制技术》周伟老师-第5章-基于滑模控制的无人机编队运动控制策略
  6. spring order_Spring @Order批注
  7. mysql 时间差_后端从mysql取值返回0时区时间数据的问题
  8. FMS3 参数设定档修改
  9. ICollection IEnumerable/IEnumerator IDictionaryEnumerator yield
  10. python调用soap_如何在python zeep中调用soap api而不使用wsdl(非wsdl模式)?使用用户和密码身份验证调用位置URL...
  11. 停车场管理系统软件概要设计说明书
  12. 36氪专访| 友盟+CEO朋新宇:大数据赛道会越来越宽,同时也会越来越头部化
  13. vue-element-admin安装指南
  14. 论文的可复现性,能否量化分析?
  15. java sql server连接字符串_java连接sql server
  16. R语言地理加权回归数据分析
  17. 获取枚举常量的描述值Description
  18. Spring框架(三)---Spring的初衷,目标,基本组成
  19. java局部变量赋值给全局变量,干货整理
  20. Spring3 MVC请求参数获取的几种方法

热门文章

  1. 双击程序没反应的解决办法之一
  2. 菩提本无树 明镜亦非台 本来无一物 何处惹尘埃
  3. 2017.2.18Codeforces Round #398 (Div. 2)
  4. python库能画什么东西_Python turtle库能画出什么好玩的东西?
  5. 机器学习-Hierarchical clustering 层次聚类算法
  6. 行业分析-全球与中国电源和充电器市场现状及未来发展趋势
  7. MySQL 清空表 和截断表
  8. linux查看端口情况
  9. JS实现对数组进行自定义排序
  10. 变量的定义及注意事项