go - 分析 go 程序

标签 go profiling

我尝试分析我的 go 库,但我遇到了以下输出:

(pprof) top10
Total: 884 samples
     884 100.0% 100.0%      884 100.0% runtime.mach_semaphore_wait
       0   0.0% 100.0%      884 100.0% System

这不是很有帮助。我的库读取一个 zip 文件并解析随附的 XML 文件 (xlsx)。当我将分析函数移到我的库的最低部分(实际的 xml 解码发生的地方)时,输出并没有“更好”:

(pprof) top10   
Total: 884 samples
     884 100.0% 100.0%      884 100.0% fmt.(*fmt).formatFloat
       0   0.0% 100.0%      884 100.0% runtime.schedtrace

我知道这是一个非常模糊的问题,但也许有一些有用的提示而不必提供整个源代码?

我已经接听了来自 golang blog entry 的分析器调用并在构建 main.go 后使用 go tool pprof main profile 调用分析器。

f, err := os.Create("profile")
if err != nil {
    log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
    ... my source code here

最佳答案

分析在 Mac OS X 上不起作用是一个已知错误。https://code.google.com/p/go/issues/detail?id=6047

该错误存在于 Mac OS X 内核中,Russ Cox 有一个补丁,描述如下:http://godoc.org/code.google.com/p/rsc/cmd/pprof_mac_fix ,但是伴随着关于搞砸你的机器的可怕警告。特别是,小牛队下的补丁存在已知问题。

关于go - 分析 go 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995229/

相关文章:

Go 编译已声明但未使用

api - 使用自定义处理程序测试 API 端点时无法访问 mux 参数

go - 收集实时 GC 指标 - Golang

java - 如何跟踪可能重叠的应用程序不同组件的不同性能改进?

android - OpenGL ES 中的 GPU 分析和回调

c++ - linux性能: how to interpret and find hotspots

python - 我如何分析由多个模块和类组成的 python 脚本?

go - 无法将 nil 转换为类型 x

http - 如何结合使用 defer 和 http.ListenAndServe?

java - Mac 上最好的免费 Java 分析器