php是最好的语言

利用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))
}


作者:xTao 分类:LNMP 浏览:2237 评论:0