码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • VScode 中golang 基准测试 go test -bench .


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

    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单元测试一致,但输出的信息不同。

     

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

     

  • 相关阅读:
    8月26日计算机视觉理论学习笔记——医疗影像分割
    自动化运维工具Ansible的基本概念及Ansible playbook的基础用法
    数据结构与算法课后题-第六章(图的基本概念)
    在访问一个网页时弹出的浏览器窗口,如何用selenium 网页自动化解决?
    SAP 电商云 Spartacus UI 的 External Routes 设计明细
    计算机网络(第8版)-第6章 应用层
    netty系列之:可以自动通知执行结果的Future,有见过吗?
    Oracle两个日期都存在返回最小/最大的,如果只存在一个就返回存在的日期
    30 数据分析(上)(业务略写可跳)|jupyter|matplotlib
    基础算法之贪心
  • 原文地址:https://www.cnblogs.com/sinberya/p/17604131.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号