【青训营】Go的BenchMark的使用

news2024/9/24 3:17:45

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

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

package Benchmark

import "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指明运行多少个基准测试。

运行结果如下

image.png

其中:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV-PyQT项目实战(1)安装与环境配置

本系列从零开始实战解说基于 PyQt5 的 OpenCV 项目开发。 欢迎关注『OpenCV-PyQT项目实战 Youcans』系列&#xff0c;持续更新中 OpenCV-PyQT项目实战&#xff08;1&#xff09;安装与环境配置 OpenCV-PyQT项目实战&#xff08;2&#xff09;OpenCV导入图像 文章目录1. PyQt5 …

初识图像分类——K近邻法(cs231n assignment)

作者&#xff1a;非妃是公主 专栏&#xff1a;《计算机视觉》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 专栏系列文章 Cannot find reference ‘imread‘ in ‘init.py‘ error: (-209:Sizes of input arguments…

ppt神器islide 第1节 初步接触强大的工具-资源篇

ppt神器islide 第1节 初步接触强大的工具1 PPT大神的课程总结1.1 骨架篇1.2 色彩篇1.3 对齐篇1.4 对比篇1.5 修饰篇1.6 字体篇1.7 素材篇1.8 线条篇1.8.1 可以随意画线条&#xff0c;填充空白1.8.2 在字体上画线条&#xff0c;做成艺术字1.8.3 做对称线条&#xff0c;比如递进三…

[Vulnhub] DC-3

下载链接&#xff1a;DC-3 DC-3需要 把IDE里面的改成IDE 0:0 不然无法打开 知识点&#xff1a; Joomla cms 3.7.0 sql注入漏洞cmseek工具探测cms指纹john解密proc_popen反弹shellpython -m http.server开启http服务 & wget远程下载ubuntu16.0.4 Linux 4.4.0-21 系统漏…

使用OpenAI的Whisper 模型进行语音识别

语音识别是人工智能中的一个领域&#xff0c;它允许计算机理解人类语音并将其转换为文本。该技术用于 Alexa 和各种聊天机器人应用程序等设备。而我们最常见的就是语音转录&#xff0c;语音转录可以语音转换为文字记录或字幕。 wav2vec2、Conformer 和 Hubert 等最先进模型的最…

无穷小的比较——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是无穷小的比较&#xff0c;下面&#xff0c;就让我们一起进入高等数学的世界吧 回顾 定义 性质 定理 定理1&#xff1a; 定理2&#xff1a;等价无穷小替换定理 常用的等价无穷小 例题 小结 回顾 两个无穷小的商当然不一定还…

Android深入系统完全讲解(38)

9.6 配置 native 方法 9.6.1 CMakeLists.txt 文件中内容&#xff0c;配置生成一个 so 库add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/native…

一刷代码随想录——数组

概念数组是存放在连续内存空间上的相同类型数据的集合连续&#xff1a;增删需移动后续元素&#xff0c;删除的本质是覆盖类型&#xff1a;相同用数组&#xff0c;不同用结构数组下标从0开始C中二维数组连续分布vector的底层实现是array&#xff0c;严格来讲vector是容器&#x…

C++11 并发指南四( 详解三 stdfuture stdshared_future)

C11 并发指南四( 详解三 std::future & std::shared_future) 文章目录C11 并发指南四( 详解三 std::future & std::shared_future)std::future 介绍std::future 成员函数std::shared_future 介绍std::future_error 介绍其他与 std::future 相关的函数介绍其他与 std::f…

SWIFT Framework .NET 2023.1 Crack

SWIFT 组件 SWIFT Components 多年来一直致力于银行机构软件、在线交易软件、CRM 和零售和商业解决方案中的计费应用程序&#xff0c;以及医药和高度关键任务的 24/7 运营应用程序。作为定制银行解决方案的开发商&#xff0c;SWIFT Components 拥有所有银行产品和部门的专业知识…

【python从零入门 | 03】基本数据类型之“除法“

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专家博主 💊交流社区:CSDN云计算交流社区欢迎您的加入! 目

设置/恢复系统隐藏文件 - Windows系统

设置/恢复系统隐藏文件 - Windows系统前言普通隐藏文件显示文件设置/取消隐藏系统隐藏文件显示文件设置/取消隐藏前言 本文介绍Windows系统如何设置/恢复隐藏文件&#xff0c;隐藏文件包含普通隐藏文件和系统隐藏文件&#xff0c;系统隐藏文件一般是受保护的系统文件&#xff…

Android 蓝牙开发——Avrcp协议(十二)

SDK路径&#xff1a;frameworks/base/core/java/android/bluetooth/ 服务路径&#xff1a;packages/apps/Bluetooth/src/com/android/bluetooth/ 在使用协议类的时候无法找到该类&#xff0c;由于安卓源码中关于蓝牙协议的 Client 部分或相关接口都被 hide 给隐藏掉了&#xf…

【通信原理(含matlab程序)】实验一 双边带模拟调制和解调

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识&#xff0c;如果大家喜欢&#xff0c;别忘点个赞加个关注哦&#xff0c;让我们一起共同进步~ &#x…

AcWing - 寒假每日一题2023(DAY 11——DAY 15)

文章目录一、AcWing 4656. 技能升级&#xff08;困难&#xff09;1. 实现思路2. 实现代码二、AcWing 4454. 未初始化警告&#xff08;简单&#xff09;1. 实现思路2. 实现代码三、AcWing 4509. 归一化处理&#xff08;简单&#xff09;1. 实现思路2. 实现代码四、AcWing 4699. …

OpenCV实战(8)——直方图详解

OpenCV实战&#xff08;8&#xff09;——直方图详解0. 前言1. 直方图概念2. 直方图计算2.1 灰度图像直方图计算2.2 彩色图像直方图计算3. 应用查找表修改图像3.1 查找表3.2 拉伸直方图提高图像对比度3.3 在彩色图像上应用查找表4. 图像直方图均衡化5. 完整代码小结系列链接0. …

操作流程违规作业监测系统 yolov7

操作流程违规作业监测系统通过pythonyolov7网络深度学习技术&#xff0c;对高危场景下作业人员未按照操作流程进行正常操作行为进行实时分析识别检测&#xff0c;发现现场人员违规作业操作行为&#xff0c;不需人为干预&#xff0c;立即自动抓拍存档预警。YOLOv7 在 5 FPS 到 1…

在 VSCode 中像写 TypeScript 一样写 JavaScript

大家好&#xff0c;我是前端西瓜哥。 我们在 VSCode 编辑器中编写 js 代码&#xff0c;是会提供类型提示的。 VSCode 会推断一个变量是什么类型&#xff0c;并在你输入内容的时候&#xff0c;提供对应的 API 属性或方法补全。 如下图&#xff0c;在 js 文件中&#xff0c;ar…

【Java】到底什么是包?|最通俗易懂讲解|保姆级

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 目录Part1&#xff1a;类比理解&#xff1a;Part2&#xff1a;与包&#xff08;package)正式见面&#xff1a;2.1&#xff1a;包的本质--文件夹2.2&…

学习C++基本数值类型

写在前面 正在学习C/C/Javascript&#xff0c;面向初学者撰写专栏 博主原创C/C笔记&#xff08;干货&#xff09;&#xff0c;如有错误之处请各位读者指正 请读者评论回复、参与投票&#xff0c;反馈给作者&#xff0c;我会获得持续更新各类干货的动力。 致粉丝&#xff1a;可以…