前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言之性能测试相关(基准测试)

Go语言之性能测试相关(基准测试)

作者头像
灰子学技术
发布于 2023-10-30 07:41:38
发布于 2023-10-30 07:41:38
2620
举报
文章被收录于专栏:灰子学技术灰子学技术

在Go语言中,提供了测试函数性能(CPU和Memory)的测试方法,基准测试。

基准测试主要用来测试CPU和内存的效率问题,来评估被测代码的性能。测试人员可以根据这些性能指标的反馈,来优化我们的代码,进而提高性能问题。

本篇文章主要来介绍,基准测试的使用方法和性能指标的分析。

1. 使用规则如下所示:

1.基准测试的代码文件必须以_test.go结尾。 2.基准测试的函数必须以Benchmark开头。 3.基准测试函数必须接受一个指向testing.B类型的指针作为唯一参数。 4.在测试执行之前,需要调用b.ResetTimer(重置计时器)来重置时间,以便过滤掉测试之前代码所消耗的时间。 5.测试代码需要写在for循环中,并且循环中的最大值是b.N。

2.用例介绍:

文件结构为:benchmark.go, benchmark_test.go,测试用例的写法,参看右边的测试代码。

3.运行基准测试:

$ go test -bench=. -benchtime=5s -benchmem -run=none

参数介绍:

-bench=. :表示的是运行所有的基准测试,. 表示全部。 -benchtime=5s:表示的是运行时间为5s,默认的时间是1s。 -benchmem:表示显示memory的指标。 -run=none:表示过滤掉单元测试,不去跑UT的cases。

输出的结果内容分析:

goos: darwin:表示的是操作系统是darwin。 goarch: amd64:表示目标平台的体系架构是amd64。 BenchmarkHandleWithType-4:BenchmarkHandleWithType表示运行的函数名称;4表示的是,运行时对应的GOMAXPROCS的值。 10000000000:表示的是b.N的在5s内的值。 0.28 ns/op:表示执行一次这个函数,消耗的时间是0.28ns。 0 B/op:表示每次执行操作,分配0B的内存。 0 allocs/op:表示执行一次这个函数,分配内存的次数为1次。


参考文章: Golang在Mac、LinuxWindows下如何交叉编译:https://laucyun.com/5d140bb00295137f0caa0ade248390fb.html

Go学习笔记(三) | 怎么写Go基准测试(性能测试):https://razeencheng.com/post/go-how-to-write-benchmark.html

Go语言实战笔记(二十二)| Go 基准测试:https://www.flysnow.org/2017/05/21/go-in-action-go-benchmark-test.html

1. Go 性能调优之 —— 基准测试:https://segmentfault.com/a/1190000016354758

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灰子学技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Golang基准测试
基准测试常用于代码性能测试,函数需要导入testing包,并定义以Benchmark开头的函数, 参数为testing.B指针类型,在测试函数中循环调用函数多次
仙人技术
2021/08/31
5830
Golang基准测试
Go 高性能系列教程之一:基准测试
要想改进程序的性能,首先要知道程序的当前性能。 本节主要关注使用 Go testing 包如何构建有用的基准测试,并且给出一些最佳实践以及常见的陷阱。
Go学堂
2023/01/31
7590
Go语言实战笔记(二十二)| Go 基准测试
基准测试,是一种测试代码性能的方法,比如你有多种不同的方案,都可以解决问题,那么到底是那种方案性能更好呢?这时候基准测试就派上用场了。
飞雪无情
2018/08/28
4010
go benchmark 性能测试
基准测试主要是通过测试CPU和内存的效率问题,来评估被测试代码的性能,进而找到更好的解决方案。
solate
2019/07/22
9.4K0
Go语言学习18-基准测试
所谓基准测试(Benchmark Test,简称BMT)是指,通过一些科学的手段实现对一类测试对象的某项性能指标进行可测量、可重复和可比对的测试。很多时候,基准测试已被狭义地称为性能测试。
huazie
2025/01/19
2251
Go语言学习18-基准测试
Go语言基准测试(benchmark)三部曲之一:基础篇
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于基准测试(benchmark) Go的标准库内置的testing框架提供了基准测试(benchmark)功能,可以用来验证本地方法在串行或者并行执行时的基准表现,帮助开发者了解代码的真实性能情况,例如一个方法执行一次的平均耗时,还能看到内存分配的情况 关于Go语言基准测试(benchmark)三部曲 《Go语言基准测试(benchmark)三部曲》是欣
程序员欣宸
2023/02/13
1.8K0
Go语言基准测试(benchmark)三部曲之一:基础篇
老板:如何证明你的程序性能好?
我们拿处理同一个业务的代码,在同一台机器上运行,相同的次数,就能得出哪个性能更好了。
小锟哥哥
2022/05/10
2720
老板:如何证明你的程序性能好?
Go语言——测试与性能
​ 作为一名合格的开发者,不应该在程序开发完之后才开始写测试代码。使用 Go 语言的测试 框架,可以在开发的过程中就进行单元测试和基准测试。和 go build 命令类似,go test 命 令可以用来执行写好的测试代码,需要做的就是遵守一些规则来写测试。而且,可以将测试无缝 地集成到代码工程和持续集成系统里。
传说之下的花儿
2023/04/16
1.2K0
go代码测试与调优
Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。
PayneWu
2021/04/29
9690
go代码测试与调优
Golang 语言怎么编写测试代码?
我们使用 Golang 语言开发的项目,怎么保证逻辑正确和性能要求呢?也就是说我们如何测试我们的 Golang 代码呢?在 Golang 语言中,可以使用标准库 testing 包编写单元测试和基准测试,使用 go test 命令执行单元测试和基准测试的代码。本文我们介绍在 Golang 语言中怎么编写测试代码。
frank.
2021/10/19
2.1K0
我是如何实现Go性能5倍提升的?
代码的稳健、可读和高效是每一位 coder 的共同追求,写出更高效的代码不仅让自己爽、让 reviewer 赏心悦目,更能对业务带来实际的正面影响。本文将从实践及源码层面对 Go 的高性能编程进行解析,带你进入 Go 的高性能世界。
腾讯云开发者
2024/01/04
2.2K1
我是如何实现Go性能5倍提升的?
Go 单元测试和性能测试
测试对于互联网应用软件开发来说非常重要,它对软件可靠性保证具有重要意义,通过测试能够尽可能发现并改正软件中的错误,提高软件质量。
孤烟
2020/09/27
7810
Go语言中常见100问题-#89 Writing inaccurate benchmarks
我们不要猜测程序性能,在对代码进行优化的时候,可能会有很多因素发挥作用,所以需要综合考虑,进行测试验证准没错。然而,编写benchmark并不是一件简单的事情,很容易因编写错误的benchmark导致做出不正确优化。本章节将列举一系列非正确编写benchmark问题点。
数据小冰
2023/08/17
2940
Go语言中常见100问题-#89 Writing inaccurate benchmarks
go测试
Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。
PayneWu
2021/03/10
3680
go测试
Go Int转string几种方式性能测试[通俗易懂]
go test -v -bench=. int2string_test.go -benchmem
全栈程序员站长
2022/11/01
1.3K0
Go通过19:单元测试,确保高质量代码的秘诀!
您诸位好啊,我是无尘,今天我们进入到Go语言单元测试阶段,讲讲Go如何进行单元测试。
微客鸟窝
2021/08/18
5380
Go通过19:单元测试,确保高质量代码的秘诀!
Go 编程 | 连载 34 - Benchmark 基准测试
在 Go 编程 | 连载 33 - UnitTest 单元测试 中实现了 Go 的单元测试用例,单元测试的一般形式为:
RiemannHypothesis
2022/09/28
3430
Go语言基准测试(benchmark)三部曲之三:提高篇
-《Go语言基准测试(benchmark)三部曲》已近尾声,经历了《基础篇》和《内存篇》的实战演练,相信您已熟练掌握了基准测试的常规操作以及各种参数的用法,现在可以学习一些进阶版的技能了,在面对复杂一些的场景也能高效完成基准测试,另外还有几个坑也要提前了解,避免以后掉进去
程序员欣宸
2023/03/12
4110
Go语言基准测试(benchmark)三部曲之三:提高篇
9.Go编程快速入门学习
描述: 日常开发中, 测试是不能缺少的. 通常国内的程序员都不太关注单元测试这一部分, 俗话说不写测试的开发不是好程序猿,我认为每一位开发者都应该了解 TDD(Test Driven Development-测试驱动开发),所以本章将主要介绍下在Go语言中如何做单元测试和基准测试。
全栈工程师修炼指南
2022/09/29
7170
9.Go编程快速入门学习
golang 压力测试与并发安全测试
上一篇文章中,介绍了如何通过 go test 实现单元测试: 测试驱动开发与 golang 单元测试
用户3147702
2022/06/27
3.2K0
golang 压力测试与并发安全测试
相关推荐
Golang基准测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档