我目前正在使用Ubuntu上的SDL在C++中编写游戏。我最近多线程化了我的引擎,所以我从用valgrind/callgrind进行分析转换为gperftools。我已经得到它的工作,但它不会打印我自己的函数名称。奇怪的是,它识别SDL函数名称(我在一些线程上看到了相反的情况;共享库函数没有找到它们的名字)。 kcachegrind Output 我跑我的程序,而且为了得到执行以下两条命令是: p
当我衡量我的围棋程序中使用Linux的time实用程序运行时,我得到下面的输出: real 1m9.177s
user 7m1.788s
sys 0m39.016s
当我看到完全相同的程序执行的输出在围棋的pprof CPU分析器,我得到下面的输出: Entering interactive mode (type "help" for commands)
(pprof) top
14
我试图用gperftools分析多线程工作负载,但是难以解释产生的输出。我写了一个简单的程序,启动两个工作负载相同的线程,并使用gperftools cpu profiler进行配置。在输出中,我可以看到每个线程的两个函数,但是每个线程的开销在一次运行和下一次运行之间会有很大的不同。我希望这两个函数都显示相同的结果,因为它们是相同的工作负载,但实际上,其中一个可能是90%,另一个是10%,有时是8