profiling with valgrind as opposed to gcc
一段时间以来,我一直在使用gprof来分析我的C代码,但是它非常非常不稳定,在每次运行时它都会给我带来不同的仿真时间和%。
我决定切换到valgrind,我正在使用valgrind进行性能分析,但是我想显示数据并获得与gprof类似的结果。在gprof中,我得到了%执行时间,self ns / call
是否有一种无需使用kcachegrind即可获取此信息的方法?
Kcachegrind正在打开UI,我更喜欢获取文件,以便我可以分析,因为我想一起进行多个分析
感谢您的帮助
- 您要分析哪种代码?应用程序代码还是库代码?里面有任何I / O吗?有递归吗?无论如何,您是否尝试过RotateRight.com的Zoom?
-
我暂时获得一些免费软件后,变焦具有30天的试用期。
-
好吧,尽管这种方法与gprof风格的一般常识相反,但它是免费的并且有效。询问您的配置文件是gprof的原因仅适用于非常狭窄的程序-CPU绑定,调用不多,没有递归等。
-
看起来不错,如果valgrind不起作用,请尝试一下!谢谢=)
-
它基于这样的想法,即沉重的语句自然会将自己暴露给随机快照,而无需您实际进行测量。在极限范围内,您可以一次射击找到无限循环。
因此,如果您要使用裸数据,为什么要查看gui?从较低级别开始,即cachegrind本身。 http://valgrind.org/docs/manual/cg-manual.html
- 我不是在查看GUI,而是为了获取结果KCachegrind使用GUI。我正在寻找在命令窗口中显示此类信息的命令
-
我要说的@Syntax_Error是,KCachegrind只是Cachegrind之上的gui层,因此解决您的问题的方法可能是使用Cachegrind,而不是KCachegrind。
-
该工具是callgrind,btw(cachegrind实际上是另一个)。它将结果转储到文件中,然后在kcachegrind中打开该文件。您在CLI上可以做的就是使用callgrind_control来控制转储快照,清零计数器,启动/停止检测等,并读取由转储计数器创建的文件。 IMO手动读取后者是徒劳的,并且使用kcachegrind之类的GUI打开它们就好了。您当然可以在CLI上运行callgrind时收集这些文件,然后在kcachegrind中打开并分析它们。