用于分析的第三方包

在这小节,您将看到一个设置分析环境的第三方包的使用,它比使用 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

最后编辑: kuteng  文档更新时间: 2021-03-27 20:14   作者:kuteng