分析程序

时间:2014-06-02 13:03:26

标签: 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接听了探查者电话,并在构建go tool pprof main profile后使用main.go调用了探查器。

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

1 个答案:

答案 0 :(得分:6)

这是一个已知的错误,分析在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,但是它附带了关于搞砸机器的可怕警告。特别是,Mavericks下的补丁存在已知的问题。