C++ 用C或C+编写的评测程序+;

C++ 用C或C+编写的评测程序+;,c++,c,profile,C++,C,Profile,您会推荐什么样的工具来评测C/C++代码并确定哪些部分花费的时间最多。目前,我只是依靠日志,但由于引入了不必要的延迟,信息当然不准确 更可取的是,该工具还能够检测/建议可优化的区域(如果存在此类工具) 平台:Linux 应用程序应在嵌入式环境中使用,因此它应该是轻量级的和外部的(不是在某些IDE上的插件)。 < P>我可以结合“.P/>>P>”我已经用微软Visual C++的Primulter做了很好的经验,还有其他的外部程序,比如但大多数都不是免费的。取决于平台。如果您使用的是MSVC,它的

您会推荐什么样的工具来评测C/C++代码并确定哪些部分花费的时间最多。目前,我只是依靠日志,但由于引入了不必要的延迟,信息当然不准确

更可取的是,该工具还能够检测/建议可优化的区域(如果存在此类工具)

平台:Linux


应用程序应在嵌入式环境中使用,因此它应该是轻量级的和外部的(不是在某些IDE上的插件)。

< P>我可以结合“.P/>>P>”我已经用微软Visual C++的Primulter做了很好的经验,还有其他的外部程序,比如但大多数都不是免费的。

取决于平台。如果您使用的是MSVC,它的某些版本内置了探查器。AMD和Intel都有分析器(CodeAnalyst和VTune)

在Linux上,我唯一使用过的是gprof,但我知道还有其他的(我认为AMD或Intels也可以在Linux版本中使用)


当然,整个Valgrind套件也会有所帮助。有些工具,如callgrind或cachegrind,可以为您提供大量有关性能的信息。

我建议您使用Windows。支持几乎所有的编译器,包括.NET、Delphi和VB(当然还有所有C++编译器),并且是我所尝试过的最好的分析工具。它不仅仅是一个性能分析器。在linux/freebsd上,它是一个非常简单而有效的工具,可以识别哪些例程在运行时占用cPU。它提供了函数的嵌套和平面配置文件。它提供了探查器运行期间执行的每个函数占用cPU时间的百分比,以及函数本身占用的百分比和百分比这有助于您轻松地分离有问题的函数。

有许多很好的分析工具,如Quantify或KCachegrind。这些工具的一个问题是它们会降低运行时性能,因此在某些大型系统上,它们的可扩展性可能不够好

有时,只需在调试器中运行并按ctrl-c,查看堆栈跟踪并重复此操作可能4次就足够了


如果您总是处于代码的同一部分,那么您已经找到了您可能花费大部分时间的地方。

您显然需要两件事:

  • 分析代码并对其进行测量

  • 检测可优化的区域

  • 这些都是不同的问题,它们并不相同,不管别人告诉你什么

    对于问题(1),将推荐许多好的分析器

    对于问题(2),探查器只能间接提供帮助。
    有一种更简单、通常更有效的方法


    如果我们谈论的是UNIX世界,我会选择gprof/oprofile

    你确实需要重新编译你的应用程序(至少使用gprof)


    对于性能测量来说是一个不错的选择,因为在Linux中有一个用户友好的eclipse插件。

    我将在嵌入式环境中使用它,所以它也应该是轻量级和外部的(不是某个IDE的插件)。这就是上次我需要提高性能时所需要的。答对了。特别是,你应该寻找在多个调用堆栈示例上的调用站点。kcachegrind很容易是我见过的最好的可视化效果,但请注意,如果你有源代码,gprof将快得多,快得多,而且如果性能绝对关键,或者你希望仔细查看硬件性能计数器以发现问题,OProfile可能是一条可行的道路。