benchamark 并且性能分析
go test -run none -bench . -benchmem -cpuprofile cpu.prof -memprofile mem.prof; Start-Job { go tool pprof -http=:10000 .\cpu.prof }; Start-Job { go tool pprof -http=:10001 .\mem.prof }
-bench 表示执行哪些基准测试函数,后面可以加需要执行的基准测试函数名称,也可以加 .,表示执行全部的基准测试函数。(其实 -bench 后面可以加正则表达式)
-run 表示执行哪些单元测试和示例测试函数,一般会加none,表示都不执行
-benchmem 表示打印函数执行过程中的内存分配
-cpuprofile 表示将全过程的 CPU 的一些概要数据写到文件 cpuprofile.out 中
memprofile 表示将全过程的内存的一些概要数据写到文件 memprofile.out 中
这个执行后会在当前目录生成 一个 cpu.prof 和 mem.prof ,并且会自动打开浏览器显示cpu 和内存的性能指标用于分析 ,如果 需要查看 泄漏的 goroutine ,可以在xx_test.go 文件 使用
go.uber.org/goleak
包,添加方法
func TestMain(m *testing.M) {
goleak.VerifyTestMain(m)
}
就可以看你测试的方法有没有 goroutine 泄漏啦
停止掉所有的任务
Get-Job | Stop-Job | Remove-Job