看起来您分析的运行时间太短而无法获得任何有用的数据。
工作方式gprof是它会定期中断您的代码,以查看您在那一刻所处的功能。如果代码运行时间不长,它可能只收集少量数据点。相反,callgrind检测您的代码并跟踪每个函数调用和返回,并检查挂钩之间花费了多少时间。即使运行时间很短,这也可以提供更全面的视图。这有一个缺点,它会大大减慢程序的速度。
另一个优点callgrind是您可以停止、启动和保存它的数据收集。因此,如果您不想监视程序的启动或只想捕获它正在执行特定操作的时间,您可以。此外,还有一个名为的工具kcachegrind可以为您提供所收集数据的出色图形视图。
如果您可以容忍在运行程序进行测试时将程序速度减慢四倍,请callgrind改用它——它是valgrind.
如果您使用的是 Linux,您的发行版可能有一个valgrind包和一个包含的包kcachegrind(可能称为kdesdk或其他名称)。花时间学习如何使用它们是值得的(它们并不像上手那么容易gprof)。我想你会发现kcachegrind's GUI 令人印象深刻(看这个截图)。而且,顾名思义,它也可以分析cachegrind输出。