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