我尝试分析我的 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/