【GO】一文带你入门go的压力测试

1. 压力测试json文件的读写

1-1项目目录

在这里插入图片描述

1-2准备素材JsonUtil.go代码
package main

import (
	"encoding/json"
	"os"
)

func SaveHuman(human *Human, filename string) (bool, error) {
	// 打开文件
	file, _ := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
	// 挂起文件最后执行关闭
	defer file.Close()
	// 创建解码器
	encoder := json.NewEncoder(file)
	err := encoder.Encode(human)
	return err == nil, err
}

func LoadHuman(filename string, human *Human) error {
	file, _ := os.OpenFile(filename, os.O_RDONLY, 0666)
	defer file.Close()
	decoder := json.NewDecoder(file)
	err := decoder.Decode(human)
	return err
}

1-3准备JsonUtil_test.go代码
package main

import "testing"

func BenchmarkSaveHuman(b *testing.B) {
	b.Log("测试开始")
	// 测试开销
	b.ReportAllocs()
	human := &Human{
		Name: "咔咔",
		Age:  24,
	}
	for i := 0; i < b.N; i++ {
		SaveHuman(human, "C:/Users/Administrator/Desktop/go/11压力测试/kaka.json")
	}
}

func BenchmarkLoadHuman(b *testing.B) {
	b.Log("测试开始")
	// 测试开销
	b.ReportAllocs()
	hPrt := new(Human)
	for i := 0; i < b.N; i++ {
		LoadHuman("C:/Users/Administrator/Desktop/go/11压力测试/kaka.json", hPrt)
	}
}

1-4整包开始测试

在这里插入图片描述

1-5测试结果
  • 第一组数据未执行的次数
  • 第二组数据是每次需要的时间
  • 第三组是每次需要的内存
  • 第四组是每次需要分配的内存快
    在这里插入图片描述
1-6命令行测试 go test -v -bench .

在这里插入图片描述

2. 压力测试生成cpu画像

2-1使用终端生成性能分析文件go test -v -bench . -cpuprofile=fuck.out

在这里插入图片描述
执行完成之后会在目录下生成俩个文件
在这里插入图片描述

2-2在终端查看性能分析文件
go tool pprof 11压力测试.test.exe fuck.out

Duration: 3.13s, Total samples = 3.06s (97.92%)
这里就解释一下这行的意思,意思是做一轮压力测试需要3.13s。其中用例花掉3.06s

在这里插入图片描述

2-3 查看最耗时间的前10个用例

只需要在后边输入top 10即可
在这里插入图片描述

  • Showing nodes accounting for 2.83s, 92.48% of 3.06s total(显示节点占2.83s,占3.06s的92.48%)
  • Dropped 47 nodes (cum <= 0.02s)(丢弃47个节点(cum<=0.02s))
  • Showing top 10 nodes out of 76(显示76个节点中的前10个节点)
2-4安装cpu画像的图形工具

下载地址:https://graphviz.gitlab.io/_pages/Download/Download_windows.html
在这里插入图片描述
配置graphviz环境变量
在这里插入图片描述
重启goland,在执行 go tool pprof --web 11压力测试.test.exe fuck.out
在这里插入图片描述

在这里插入图片描述

3 cpu画像的可视化分析

这里只截取了一部分,跟终端生成出啦的数据是一致的。
然后根据消耗时间的长短来分析自己项目的问题
在这里插入图片描述

4 博主微信欢迎交流

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咔咔-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值