首页 > 其他分享 >VScode 中golang 基准测试 go test -bench .

VScode 中golang 基准测试 go test -bench .

时间:2023-08-03 18:37:30浏览次数:47  
标签:VScode 基准 testing bench golang go 测试 test

目的:基准测试的主要目的是比较不同实现方式之间的性能差异,找出性能瓶颈。

1 准备以_test.go结尾文件和导入testing包

在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。基准测试可以测试一段程序的运行性能及耗费CPU的程度,获得代码内存占用和运行效率的性能数据。Go语言中提供了基准测试框架,使用方法类似于单元测试,使用者无须准备高精度的计时器和各种分析工具,基准测试本身既可以打印出非常标准的测试报告。

func BenchmarkName(b *testing.B)

基准测试以Benchmark为前缀,需要一个*testing.B类型的参数b,基准测试必须要执行b.N次,这样的测试才有对照性,b.N的值是系统根据实际情况去调整的,从而保证测试的稳定性。

测试代码如下:

 1 package main
 2 
 3 import (
 4     "testing"
 5     "time"
 6 )
 7 func Benchmark_Log(b *testing.B) {
 8     for i := 0; i < b.N; i++ {
 9         b.Log("hello world")
10         time.Sleep(1 * time.Second)
11         b.Log("hello world jkjk")
12     }
13 }

 

2 终端输入命令进行golang基准测试

(1) go test -bench . 执行项目中所有基准测试文件

在终端输入命令:go test -bench . 可以看到 执行了1次,即为b.N的值。Benchmark_Log2函数平均每次操作花费了1011875500纳秒,Benchmark_Log函数平均每次操作花费了1003084600纳秒。

 

 

(2) go test -bench . xxx_test.go, 执行指定基准测试文件,如go test -bench . time_test.go 、go test -bench . time_test.go time2_test.go 

 

 

(3) go test -bench . -benchtime=10s 执行10s

 

(4) go test -bench . -benchtime=10x 执行10次

 

 

3 VScode测试进行golang基准测试

点击VScode视图左侧的测试按钮,点击运行按钮下方的运行测试按钮进行基准测试,或者点击module、_test.go文件,基准函数的运行测试按钮。

VScode测试进行golang基准测试的操作与golang单元测试一致,但输出的信息不同。

 

在进行基准测试的过程中,可以点击取消测试运行按钮取消测试。

 

标签:VScode,基准,testing,bench,golang,go,测试,test
From: https://www.cnblogs.com/sinberya/p/17604131.html

相关文章

  • Latex在VScode中的安装
    Latex在VScode中的安装和使用VScode+texlive+SumatraPDF1.texlive下载安装华为镜像https://mirrors.huaweicloud.com/CTAN/systems/texlive/Images/阿里镜像https://mirrors.aliyun.com/CTAN/systems/texlive/Images/下载后对其进行解压得到以下文件右键install-tl-wind......
  • 在vscode的界面的竖线光标变成灰色方块,怎么解决?Mark一下
    在vscode的界面的竖线光标变成灰色方块,怎么解决?补充一下,也有可能是setting.json中设置所致,可以去看看setting.json中是否将cursorstyle设置为了block......
  • MySQL Workbench的使用教程
    MySQLWorkbench 是MySQLAB最近释放的可视数据库设计工具。这个工具是设计MySQL数据库的专用工具。MySQLWorkbench拥有很多的功能和特性;这篇由DjoniDarmawikarta 写的文章通过一个示例展现了其中的一些。我们将针对一个订单系统建立一个物理数据模型,这里的订单系统可以......
  • DevChat VSCode 插件安装配置指南
    PlaythisarticleYourbrowserdoesnotsupporttheaudioelement.SPEED1XTableofcontents快速路径 1.安装Python3环境(3.8或以上)2.安装插件3.设置AccessKey错误排查 1.运行时未就绪2.编码错误3.“可执行权限”......
  • 我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目
    目录1.我写了一个超牛的开源项目1.1你看看这性能1.2你看看这功能1.3你猜我这一百天都经历了啥2.你有多久没写并发程序了?3.问:一个WorkerPool程序需要包含哪些功能?4.让GPT-4写第一行代码!4.1我对GPT-4说4.2GPT-4回答4.3我又对GPT-4说4.4GPT-4......
  • golang用pgx查询数据时如何将查询结果方便的放入Map中
    pgx库简介下面是来自官网的简介:pgx-PostgreSQL驱动和工具包pgx是一个用于PostgreSQL的纯Go语言驱动和工具包。pgx驱动是一个底层的高性能接口,暴露了PostgreSQL特有的功能,如LISTEN/NOTIFY和COPY。它还包含一个标准database/sql接口的适配器。工具包组件是一组相关的包,实......
  • Golang反射type和kind有什么区
    一、前言Go语言中的反射是由reflect包提供支持的,它定义了两个重要的类型Type和Value。任意值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且reflect包提供了reflect.TypeOf和reflect.ValueOf两个函数来获取任意对象的Value和Type。在Go语......
  • 仅三天,我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目
    目录1.我写了一个超牛的开源项目1.1你看看这性能1.2你看看这功能1.3你猜我这一百天都经历了啥2.你有多久没写并发程序了?3.问:一个WorkerPool程序需要包含哪些功能?4.让GPT-4写第一行代码!4.1我对GPT-4说4.2GPT-4回答4.3我又对GPT-4说4.4GPT-4给出了新的回答4.5......
  • golang json字符串转结构体
    1、不知道结构体类型的情况下funcJsonStringToMap(jsonStrstring)(map[string]interface{},error){//未知值类型m:=make(map[string]interface{})err:=json.Unmarshal([]byte(jsonStr),&m)iferr!=nil{fmt.Printf("Unmarshalwither......
  • 个人VSCode Vim基础配置文件
    基础配置项vscode-vim插件由于是一款模拟器,所以它的配置文件是放在settings.json文件中,而不是vimrc文件中,个人也并不推荐将配置放在vimrc文件中,因为这会导致多端同步变的复杂,尽管这款插件可以支持从vimrc文件中读取配置。下面是一些我会在使用vscode-vim插件时配置的vim选项,直接......