用于分析的第三方包
在这小节,您将看到一个设置分析环境的第三方包的使用,它比使用 runtime/pprof
标准包方便很多。这在 betterProfile.go
中有所体现,将分三部分来介绍。
betterProfile.go
的第一部分如下:
package main
import (
"fmt"
"github.com/pkg/profile"
)
var VARIABLE int
func N1(n int) bool {
for i := 2 ; i < n; i++ {
if (n % i) == 0 {
return false
}
}
return true
}
这段代码,您能看到使用了第三方包,在 github.com/pkg/profile
。您可以在 go get
命令的帮助下下载它,如下:
$ go get github.com/pkg/profile
betterProfile.go
的第二段代码如下:
func Multiply(a, b int) int {
if a == 1 {
return b
}
if a == 0 || b == 0 {
return 0
}
if a < 0 {
return -Multiply(-a, b)
}
return b + Multiply(a-1, b)
}
func main() {
defer profile.Start(profile.ProfilePath("/tmp")).Stop()
这个由 Dave Cheney 开发的 github.com/pkg/profile
包需要您插入一行声明来开启 CPU 分析 在您的 Go 应用中。如果您想开启 内存分析的话,您应该插入如下声明来代替:
defer profile.Start(profile.MemProfile).Stop()
这个程序余下代码如下:
total := 0
for i := 2; i < 200000; i++ {
n := N1(i)
if n {
total++
}
fmt.Println("Total: ", total)
}
total = 0
for i := 0; i < 5000; i++ {
for j := 0; j < 400; j++ {
k := Multiply(i, j)
VARIABLE = k
total++
}
}
fmt.Println("Total: ", total)
}
执行 betterProfile.go
产生如下输出:
$ go run betterProfile.go
2018/03/08 17:01:28 profile: cpu profiling enabled, /tmp/cpu.pprof
Total: 17984
Total: 2000000
2018/03/08 17:01:56 profile: cpu profiling disabled, /tmp/cpu.pprof