【发布时间】:2011-01-06 11:15:45
【问题描述】:
我正在尝试使用 gprof 找出我的 C++ 程序将时间花在哪里。这是我的困境:如果我使用与发布版本相同的优化设置进行编译,几乎所有内容都会被内联,而 gprof 毫无帮助地告诉我,我 90% 的时间都花在了核心例程中,所有内容都被内联了。另一方面,如果我在禁用内联的情况下编译,程序运行速度会慢一个数量级。
当我的程序在启用内联的情况下编译时,我想知道从我的核心例程中调用的过程花费了多少时间。
我在四核 Intel 机器上运行 64 位 Ubuntu 9.04。我查看了 google-perftools,但这似乎不适用于 x86_64。不能在 32 位机器上运行。
是否有人对启用内联时如何更有效地分析我的应用程序有什么建议?
编辑:这是对我的问题的一些说明。如果最初不清楚,我深表歉意。
我想找出我的应用程序中花费的时间。分析我的优化构建导致 gprof 告诉我大约 90% 的时间花在 main 中,所有内容都内联。我在分析之前就已经知道了!
我想知道的是内联函数花费了多少时间,最好不要在我的构建选项中禁用优化或内联。在禁用内联进行分析时,应用程序的速度会慢一个数量级。这种执行时间的差异是一个方便的问题,但我不相信禁用内联构建的程序的性能配置文件将与启用内联构建的程序的性能配置文件强烈对应。
简而言之:有没有办法在不禁用优化或内联的情况下获得有用 C++ 程序的分析信息?
【问题讨论】:
-
stackoverflow.com/questions/375913/… 。这个帖子有很多信息