寻找低影响力的c ++探查器

时间:2012-05-03 14:56:46

标签: c++ performance profiling

我正在寻找一个低影响,与os无关的c ++代码分析器。

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

如果您使用的是Windows,则可以尝试我的探查器,如http://ravenspoint.wordpress.com/2010/06/16/timing/

所述

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