利用pprof测试go代码内存消耗性能,生成图形报告
和上一篇测试cpu差不多只是命令变了
命令:go tool pprof -http=127.0.0.1:8081 http://localhost:8080/debug/pprof/heap
上一篇测试cpu性能必须在测试命令期间,运行需要测试的接口才有效果
测试内存消耗的时候可以先运行完接口,再运行命令也能测试出内存消耗。也可以加个 -seconds 10 等待10s
下面是测试代码
package main import ( "fmt" "github.com/gin-gonic/gin" "log" "net/http" _ "net/http/pprof" // 这一行不能忘!!!!!!!!!!!!!!!!!! ) func main() { r := gin.Default() r.GET("/consuming", func(c *gin.Context) { consumeMemory() consumeMemoryV2() consumeMemoryV3() c.String(http.StatusOK, "Memory consumption test completed.") }) go func() { log.Println(http.ListenAndServe(":8080", nil)) }() _ = r.Run(":8000") } func consumeMemory() { const size1 = 300000000 // 大约 3MB 的内存 var data []byte for i := 0; i < size1; i++ { data = append(data, 'a') } fmt.Println(" consumeMemory:Consumed memory:", len(data)) } func consumeMemoryV2() { const size2 = 100000000 // 大约 1MB 的内存 var data []byte for i := 0; i < size2; i++ { data = append(data, 'a') } fmt.Println("consumeMemoryV2:Consumed memory:", len(data)) } func consumeMemoryV3() { const size3 = 1 // var data []byte for i := 0; i < size3; i++ { data = append(data, 'a') } fmt.Println("consumeMemoryV3:Consumed memory:", len(data)) }