【青训营】Go的BenchMark的使用
本文内容总结于 字节跳动青年训练营 第五届后端组
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的函数进行测试
- 基准测试代码文件必须是_test.go结尾,和单元测试一样;
- 基准测试的函数以Benchmark开头;
- 参数须为 *testing.B;
- 基准测试函数不能有返回值;
- b.N是基准测试指定的循环次数,不能由用户指定
然后使用命令行输入:
go test -bench=. -benchmem -count=3
其中go test用于启动测试,使用-bench指明启动的是基准测试,并且-bench=也用于指明测试的是什么函数,-bench=.的意思是测试所有Bench函数。 -benchmem用于指明基准测试的内存相关设置,现在暂时不使用。-count=3指明运行多少个基准测试。
运行结果如下
其中:
- BenchmarkFib-8 为测试的函数名
- 第二列表示基准测试进行了多少次测试,这就是b.N的值
- 第三列表示每次执行花费了多少时间
- 第四列表示每次执行需要多少内存
- 第五列表示每次执行申请了多少次内存
【青训营】Go的BenchMark的使用相关推荐
- 字节青训营第三课之高质量编程与性能调优实战的笔记和总结
这是字节青训营第三课:高质量编程与性能调优实战的笔记和总结 概要 准备 尝试使用 test 命令,编写并运行简单测试 尝试使用 -bench参数,对函数进行性能测试 推荐阅读Go代码Review建议. ...
- HTML+CSS实现按钮手风琴效果 | 青训营笔记
HTML+CSS实现按钮手风琴效果 | 青训营笔记 需求描述 HTML部分 CSS部分 完整代码 效果展示 这是我参与「第四届青训营」笔记创作活动的的第7天. 需求描述 实现一排居中的五个图标,默认为 ...
- 字节青训营抖音APP
You just work hard, the rest is up to time GitHub地址:https://github.com/xiaodainiao/TikTokLite TikTok ...
- EXPER LOG | 作为ByteDance青训营-客户端-项目leader的历程和收获
~此处为记录2022SUMMER青训营,我担任项目组长时,在团队协作,项目任务分配,规则商议协定以及收获心得 ~还在更新中 极简tiktok内容介绍: 榜单模块(主页面一) 榜单页面设计 历史数据查询 ...
- 【Go入门】Socks5代理服务器实现 翻译api调用 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记. [课程一]Go基础 主要内容 第一节课主要介绍了go的语法基础,包括变量.循环分支.数组切片.函数方法.错误处理.字符串.格式化处理. ...
- 字节青训营第一课之go语言入门的笔记和总结
有幸参加了字节跳动举办的青训营活动,主要是go语言的编程实践,我将会整理课程的笔记和总结,欢迎关注! 1Go语言简介 由于Go语言有语法简单.高性能等特点,因此国内外各大公司如谷歌.腾讯.字节等都在使 ...
- Go语言上手(一) | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记. 文章目录 语法速览 基础语法 第一:类型 第二:内置库部分 json库的使用 时间库的使用 字符串和数字互转 os相关信息 实战项目 ...
- 字节跳动青训营笔试题解
文章目录 前言 一.单选题 二.多选题 三.编程题 T1.旋转数组最大值 题目 思路 代码 T2.社交圈 题目 思路 代码 四.简答题 题目 思路 前言 第五届字节跳动青训营-后端专场笔试题解,简单做 ...
- 三个小项目入门Go语言|字节青训营笔记
前言 这是青训营的第一课,今天的课程比较快速的讲解了go语言的入门,并配合三个小的项目实践梳理所学知识点,这里详细回顾一下这三个项目,结合课后作业要求做一些代码补充,并附上自己的分析,青训期间的所有课 ...
- Go语言实战案例 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天 前言 在上一篇笔记中,已经总结了 Go 语言的基础语法和一些常见标准库的使用方法,本文主要基于之前的基础,通过两个实战的例子对 Go 的基础语 ...
最新文章
- (传送门)JVM的GC日志的主要参数
- Python if控制流语句
- 《编写可测试的JavaScript代码》——1.4 小结
- bzoj2957:楼房重建
- jboss as安装配置_书评:JBoss AS 7:配置,部署和管理
- c语言 a 0,[整理]C语言中的a,a和a[0]
- 滴!你的“十三香”已发货,iPhone 13系列今日正式发售
- SAP澄清概念、理清思路、组织机构
- 华为和荣耀蓝牙耳机为什么那么贵?
- win11白屏死机怎么办 Windows11白屏死机的解决方法
- charles抓PC端的包
- html一排小标题怎么写,工作总结大标题小标题怎么写
- WP-2021绿盟杯-藏宝图
- 解决idea 拉取新项目没有maven窗口
- 自定义starter出现Unable to read meta-data for class 这样解决
- linux服务器硬盘修复,Linux服务器磁盘坏道怎么修复
- C#基础 uint,long,ulong,float,decimal 定义并初始化
- FBI 网站被入侵 ? 官方称是黑客在造谣
- 转:使用Python对音频进行频谱分析
- composer 安装配置下载时出现 [InvalidArgumentException] Could not find package等等问题解决方案