Go:性能分析工具 - pprof

參考:【windows】Graphviz的下載安裝,配置環境和簡單實例
參考:9.1 Go 大殺器之性能剖析 PProf
參考:關於golang性能調試及pprof可視化

1、Graphviz下載安裝

       Graphviz是用來查看圖形化界面的性能結果分析的,如果不需要的話,可以直接跳過這一步

1、msi包下載

       這邊下載的是msi包,不是zip包。提供下載地址:Graphviz - Graph Visualization Software
在這裏插入圖片描述

2、安裝

       點開msi,按照步驟默認安裝到我們自定義的盤符,安裝之後目錄是這樣:
在這裏插入圖片描述

3、環境變量配置

       這邊是windows10的環境變量配置。要配置的屬性是我們安裝的bin的目錄地址
在這裏插入圖片描述

4、驗證安裝成功

       打開我們的window控制檯,win+R彈出“運行”,輸入cmd,打開控制檯

       輸入dot -version,如果安裝成功會出現下面的版本號信息:

在這裏插入圖片描述

2、簡單例子運行

1、書寫我們的demo

       注意這邊一定要引入pprof包,_ "net/http/pprof"表示引入但不在代碼中使用

	package main
	
	import (
		"log"
		"net/http"
		_ "net/http/pprof"
	)
	
	func main() {
		go func() {
			for {
				log.Println("https://github.com/EDDYCJY")
			}
		}()
	
		http.ListenAndServe("0.0.0.0:6060", nil)
	}

2、啓動代碼

       啓動代碼會發現我們的控制檯一致在循環打印,正常在http監聽客戶端請求也是一個無限循環的操作
在這裏插入圖片描述

3、web查看

       因爲我們這邊監聽的是6060端口,所以我們在web頁面可以嘗試打開http://127.0.0.1:6060/debug/pprof/
在這裏插入圖片描述

4、終端交互

       在控制檯輸入我們的命令go tool pprof http://localhost:6060/debug/pprof/profile?seconds=20,這邊是查看profile的屬性,時間是20秒內,具體可修改,我們看一下效果(以goland作爲交互終端):
在這裏插入圖片描述

說明:

  • flat:給定函數上運行耗時
  • flat%:同上的 CPU 運行耗時總比例
  • sum%:給定函數累積使用 CPU 總比例
  • cum:當前函數加上它之上的調用運行總耗時
  • cum%:同上的 CPU 運行耗時總比例

       其他命令可參考help或者網上資料

5、可視界面

1、書寫測試函數

	package data

	import "testing"
	
	const url = "https://github.com/EDDYCJY"
	
	func TestAdd(t *testing.T) {
		s := Add(url)
		if s == "" {
			t.Errorf("Test.Add error!")
		}
	}
	
	func BenchmarkAdd(b *testing.B) {
		for i := 0; i < b.N; i++ {
			Add(url)
		}
	}

2、運行測試函數

       因爲我們這邊的測試函數是在data目錄下面,所以我們先要進入到這個data目錄下面才能進行運行,有點不智能啊

       命令是:go test -bench . -cpuprofile cpu.out,會生成一個cpu.out文件
在這裏插入圖片描述

3、查看可視化結果

       然後我們需要進入pprof模式,在控制檯輸入go tool pprof cpu.out,輸入web,會彈出一個對話框,讓你選擇顯示的程序
在這裏插入圖片描述

       這邊查看的結果大概是這樣的:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章