我正在尝试使用gprof找出我的C++程序将时间花在哪里。这是我的两难境地:如果我使用与发布版本相同的优化设置进行编译,几乎所有内容都会内联,而gprof告诉我,我90%的时间都花在核心例程中,所有内容都是内联的。另一方面,如果我在禁用内联的情况下编译,程序的运行速度会慢一个数量级。
我想知道当我的程序在启用内联的情况下编译时,从我的核心例程调用的过程花费了多少时间。
我在一台英特尔四核机器上运行64位Ubuntu 9.04。我研究了google-perftools,但它在x86_64上似乎运行得不太好。在32位机器上运行不是一种选择。
对于如何在启用内联的情况下更有效地分析我的应用程序,有人有什么建议吗?
编辑:这里是对我的问题的一些澄清。如果一开始不清楚,我向您道歉。
我想找出我的应用程序中的时间都花在哪里了。分析我的优化构建导致gprof告诉我大约90%的时间都花在main上,所有东西都是内联的。在分析之前我就已经知道了!
我想知道的是内联函数花费了多少时间,最好不要禁用优化或在我的构建选项中使用内联。在禁用内联的情况下进行性能分析时,应用程序的速度要慢上一个数量级。这种执行时间上的差异是一个方便的问题,但我也不确定在禁用内联的情况下构建的程序的性能配置文件是否会与启用内联的程序的性能配置文件强烈对应。
简而言之:有没有一种方法可以在不禁用优化或内联的情况下获得有关C++程序的有用分析信息?
https://stackoverflow.com/questions/2087870
复制相似问题