【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 博主微信欢迎交流

在这里插入图片描述

发布了875 篇原创文章 · 获赞 132 · 访问量 68万+

猜你喜欢

转载自blog.csdn.net/fangkang7/article/details/105091479