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

Looking for a low impact c++ profiler

本文关键字:探查 c++ 影响 寻找      更新时间:2023-10-16

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

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

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

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

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

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

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

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