參考:【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,會彈出一個對話框,讓你選擇顯示的程序
這邊查看的結果大概是這樣的: