我在我的应用程序的“RelDebug”版本上运行 Visual Studio 2008 探查器。优化已开启,但内联只是适度的,存在堆栈帧,并发出符号。换句话说,RelDebug 是一个经过一定程度优化的可以调试的构建(尽管适用于检查变量的通常发布警告)。
我在单独的运行中同时运行采样和检测分析器。
结果?采样分析器产生看起来合理的结果。但是,当我查看 Instrumented 分析器结果时,我看到甚至不应该靠近列表顶部的函数出现了。
例如,像“SetFont”这样的函数,它只包含 1 行将高度分配给类成员。或仅分配一个矩形的“SetClipRect”。
当然,我正在查看“独家”统计数据(即减去儿童)。
这发生在其他人身上吗?一旦我的应用程序增长到一定大小,它似乎总是会发生。它使检测分析器在这一点上毫无用处。
我解决了这个问题。Visual Studio 2008 和 Visual Studio 2010 分析器都是平庸的(礼貌地说)。我购买了带有 vTune Amplifier(分析器)的 Intel C++ Studio。在完全相同的代码上使用英特尔分析器,我能够获得真正有意义的分析器结果。