1.装置
下载Graphviz
地址 http://www.graphviz.org/downl…
我本地下载好windows版本后,须要退出到环境变量中
装置pprof
go get github.com/pkg/profile
退出到环境变量中
2.代码样例
package main
import (
"github.com/pkg/profile"
"log"
"time"
)
func joinSlice() []string {
var arr []string
for i := 0; i < 100000; i++ {
arr = append(arr, "arr")
}
return arr
}
func main() {
// 开始性能剖析, 返回一个进行接口
stopper := profile.Start(profile.CPUProfile, profile.ProfilePath("."))
// 在main()完结时进行性能剖析
defer stopper.Stop()
// 剖析的外围逻辑
joinSlice()
// 让程序至多运行1秒
time.Sleep(time.Second)
log.Println("finished")
}
//go build -o cpu cpu.go
//go tool pprof --pdf cpu.exe cpu.pprof > cpu.pdf
优化后的
func joinSlice() []string {
arr := make([]string,100000)
for i := 0; i < 100000; i++ {
arr = append(arr, "arr")
}
return arr
}
依照程序执行
go build //生成可执行文件
.\golangdemo.ext //执行生成cpu.pprof文件
go tool pprof --pdf golagndemo.ext cpu.pprof > cpu.pdf
3.后果
两次生成的后果
第一次能够看到joinSlice占用了50%的cpu工夫,另外50%是垃圾回收
优化后就没有了
参考 http://c.biancheng.net/view/1…
发表回复