我曾尝试对一些Golang应用程序进行性能分析,但无法使其正常工作。我已经按照以下两个教程进行了操作:
- http://blog.golang.org/profiling-go-programs
- http://saml.rilspace.org/profiling-and-creating-call-graphs-for-go-programs-with-go-tool-pprof
2015/06/16 12:04:00 profile: cpu profiling enabled, /var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
所以,我理解正在执行分析,将信息发送到文件中。
但是,当我查看任何测试程序中的文件大小时,它总是64字节。
当我尝试使用pprof打开cpu.pprof文件并执行“top10”命令时,我发现文件中没有东西:
(“./fact”是我的应用程序)
go tool pprof ./fact /var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof top10 --> (pprof) top10 0 of 0 total ( 0%) flat flat% sum% cum cum%
所以,当我在进行性能分析时,似乎什么都没有发生。
我已经在Mac(这个例子)和Ubuntu上测试过了,使用了三个不同的程序。
您知道我做错了什么吗?
这个示例程序非常简单,这是代码(一个非常简单的阶乘程序,我从互联网上找到的):
import "fmt"
import "github.com/davecheney/profile"
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
defer profile.Start(profile.CPUProfile).Stop()
fmt.Println(fact(30))
}
谢谢,Fer