您建议使用什么最佳工具来分析 C/C++ 代码并确定哪些部分花费最多时间。目前,我只是依赖日志,但信息当然不准确,因为引入了不必要的延迟。

优选地,如果存在这样的工具,该工具还能够检测/建议可以优化的区域。

平台:Linux

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

有帮助吗?

解决方案

我可以衷心推荐 callgrind 结合 K缓存研磨.

其他提示

在Linux / FreeBSD的“gprof的”是一个相当简单和有效的工具来确定哪个例程占用在运行时的CPU。它提供的功能都嵌套和平面轮廓。它给你由简运行期间执行的各个功能拍摄的CPU时间的百分比,也是函数本身内采取的百分比,并通过其子功能所采取的百分比。这可以帮助您轻松隔离有问题的功能。

我做了使用微软的Visual C ++剖析的好经验,有喜欢的英特尔VTune™可视化时,也是如此,但其中大多数是不自由的。

取决于平台。如果您使用MSVC,它的一些版本已经探查器内置的。AMD和Intel都有可用的剖析以及(CodeAnalyst和VTune™可视化)。

在Linux中,我使用的只有一个是gprof的,但我知道还有其他的(我认为AMD的英特尔或者那些可以在Linux版本可太)

和当然整个Valgrind的套件可能有帮助太。像callgrind或cachegrind一些工具可以给你很多关于性能的信息。

有很多很好的分析工具对这个喜欢量化或KCachegrind。有一个问题,使用这些工具是他们减慢运行时的性能等一些大型系统他们可能无法很好地扩展不够。

有时是不够的,只是在调试器中,然后按Ctrl-C运行,看堆栈跟踪并重复此也许4倍。

如果你总是在代码,那么你已经找到,你很可能花费大部分时间的同一部分。

很显然你想要的两件事情:

  1. 分析代码和测量。

  2. 要检测的区域,可以最优化。

这些都是不同的问题。他们都不相同,尽管你可能已经被告知。

对于问题(1)许多良好的剖析将建议。

对于问题(2)剖面仪帮助仅仅是间接的。
还有一个更加简单并且通常更有效的技术。

看看这里

我也会去使用gprof / oprofile中,如果我们谈论的是UNIX世界。

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

GPROF

OProfile的

如果您使用的是Windows,我建议 AQTime 。支持几乎所有的编译器在那里,包括.NET,Delphi和VB(以及所有的C ++编译器,当然(的;)和只是最好的分析工具我没有试过它不仅是一个性能分析器

用于性能测量 个人档案 是一个不错的选择,因为 eclipse 中有一个用户友好的插件 Linux 工具项目.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top