1.装置

下载Graphviz
地址 http://www.graphviz.org/downl...

我本地下载好windows版本后,须要退出到环境变量中

装置pprof

go get github.com/pkg/profile

退出到环境变量中

2.代码样例

package mainimport (    "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...