您认为最好的用于分析C/C++代码并确定哪些部分占用了大量时间的工具是什么?目前,我只能依靠日志,但是由于引入了不必要的延迟,所以信息不准确。
最好的情况是,如果存在这样的工具,它还应该能够检测/建议可以进行优化的区域。
平台:Linux
该应用程序将在嵌入式环境中使用,因此应该是轻量级和外部的(不是某个IDE上的插件)。
callgrind
与KCachegrind相结合使用。这取决于平台。如果您使用的是MSVC,则某些版本已内置分析器。AMD和Intel都提供了性能分析器(CodeAnalyst和VTune)。
在Linux上,我唯一使用过的是gprof,但我知道还有其他工具可用(我认为AMD或Intels的工具也可能在Linux版本中可用)
当然,整个Valgrind套件也可能会有所帮助。像callgrind或cachegrind这样的工具可以为您提供大量有关性能的信息。
有许多很好的分析工具,例如Quantify或KCachegrind。这些工具的一个问题是它们会减慢运行时性能,因此在一些大型系统上可能无法很好地扩展。
有时仅需在调试器中运行并按ctrl-c,查看堆栈跟踪,并重复此操作4次即可。
如果您总是在代码的同一部分,则已找到您可能花费大部分时间的位置。
你显然想要两件事情:
对你的代码进行分析和测量。
检测可能需要优化的区域。
这些是不同的问题。尽管你可能听到过相反的说法,但它们并不相同。
对于问题(1),会建议使用许多好的分析工具。
对于问题(2),分析工具只能在间接方面提供帮助。
有一种更简单且通常更有效的技术。