我正在为 c++ 代码寻找一种低影响、独立于操作系统的分析器。
当我说低影响时,我指的是比 valgrind 更少侵入性的东西。我计划在基于 MIPS 的嵌入式环境中使用它(因此是操作系统独立性)并尝试了 valgrind 的移植版本,它完全改变了性能特征(工作中的海森堡原理太多了),所以我不能走那条路。我们知道内存总线速度是一个瓶颈,这很可能解释了为什么 valgrind 如此具有侵入性。
我创建了一种基于检查点的本地分析器类型,可以让我测量代码的某些部分。基本上我必须修改代码(并重新编译)以在代码的战略位置设置检查点。然后,在执行时,它会存储每个检查点被命中的次数以及自最后一个检查点被命中以来的时间。然后,在运行它之后,我可以转储检查点并为每个它计算:num-hits、max-time、min-time、avg-time 等。
这个分析器(我称之为 LowImpactProfiler)工作正常,但我想知道那里是否有更好的东西。
我考虑过 oProfile,它是一个采样分析器,但由于我没有运行 Linux,我认为它很难实现。