10

我正在为 c++ 代码寻找一种低影响、独立于操作系统的分析器。

当我说低影响时,我指的是比 valgrind 更少侵入性的东西。我计划在基于 MIPS 的嵌入式环境中使用它(因此是操作系统独立性)并尝试了 valgrind 的移植版本,它完全改变了性能特征(工作中的海森堡原理太多了),所以我不能走那条路。我们知道内存总线速度是一个瓶颈,这很可能解释了为什么 valgrind 如此具有侵入性。

我创建了一种基于检查点的本地分析器类型,可以让我测量代码的某些部分。基本上我必须修改代码(并重新编译)以在代码的战略位置设置检查点。然后,在执行时,它会存储每个检查点被命中的次数以及自最后一个检查点被命中以来的时间。然后,在运行它之后,我可以转储检查点并为每个它计算:num-hits、max-time、min-time、avg-time 等。

这个分析器(我称之为 LowImpactProfiler)工作正常,但我想知道那里是否有更好的东西。

我考虑过 oProfile,它是一个采样分析器,但由于我没有运行 Linux,我认为它很难实现。

4

2 回答 2

7

我已经使用Shiny在非常有限的嵌入式设备上进行了分析,并取得了巨大的成功。根据您的描述,它采用与 LowImpactProfiler 类似的方法。

于 2012-05-03T14:59:37.563 回答
3

如果您使用的是 Windows,您可以尝试我的分析器,此处描述为http://ravenspoint.wordpress.com/2010/06/16/timing/

听起来它可能比你的更容易使用,但它不是独立于操作系统的。它使用对 Windows API 的 QueryPerformanceCounter() 的调用。它是开源的,因此使用那里可用的任何高性能计时器将其移植到您的操作系统可能是值得的。

于 2012-05-03T15:54:49.583 回答