您建议使用哪种方法来分析C / C ++代码并确定哪些部分花费的时间最多。目前,我只是依赖于日志,但当然由于引入了不必要的延迟,因此信息不准确。
优选地,如果存在这样的工具,该工具还能够检测/建议可以优化的区域。
平台:Linux
应用程序应该在嵌入式环境中使用,因此应该是轻量级和外部的(不是某些IDE上的插件)。
答案 0 :(得分:9)
我可以衷心地推荐callgrind
与KCachegrind结合使用。
答案 1 :(得分:5)
答案 2 :(得分:2)
我使用Microsoft Visual C ++中的探查器获得了很好的体验,还有其他外部程序,如Intels VTune,但大多数都不是免费的。
答案 3 :(得分:1)
取决于平台。如果你正在使用MSVC,它的某些版本内置了一个分析器.AMD和Intel也都有分析器(CodeAnalyst和VTune)。
在Linux上,我使用的唯一一个是gprof,但我知道还有其他的(我认为AMD或英特尔也可以在Linux版本中使用)
当然,整个Valgrind套房也可能会有所帮助。诸如callgrind或cachegrind之类的工具可以为您提供大量有关性能的信息。
答案 4 :(得分:1)
有很多很好的分析工具,比如Quantify或KCachegrind。这些工具的一个问题是它们会降低运行时性能,因此在某些大型系统上它们可能无法很好地扩展。
有时只需在调试器中运行并按ctrl-c即可,查看堆栈跟踪并重复此操作4次。
如果您总是在代码的相同部分,那么您已经找到了大部分时间可能花费的地方。
答案 5 :(得分:1)
你显然想要两件事:
分析您的代码&测量它。
检测可以优化的区域。
这些是不同的问题。尽管你可能被告知,但它们并不相同。
对于问题(1),将建议许多好的剖析器。
问题(2)剖析器只能间接帮助 有一种更简单,通常更有效的技术。
答案 6 :(得分:1)
答案 7 :(得分:0)
如果你在Windows上,我建议AQTime。支持几乎所有编译器,包括.NET,Delphi和VB(当然还有所有C ++编译器(;),它们是我曾经尝试过的最好的分析工具。而且它不仅仅是一个性能分析器。
答案 8 :(得分:0)
对于性能测量oprofile是一个不错的选择,因为在Linux Tools Project中存在一个用户友好的eclipse插件。