返回介绍

11.5.3 用于分析的第三方包

发布于 2024-08-14 12:50:31 字数 3652 浏览 0 评论 0 收藏 0

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

github.com/pkg/profile 包帮您完成数据捕获部分;与之前的处理一样!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文