我现在明白了,但我不是 100% 确定为什么。我将尝试描述一下我的代码:
我有一个负责许多子系统的应用程序类。在我最初的尝试中,我尝试像这样测量应用程序内部的性能:
int main(int argc, char *argv[])
{
Application a(argc, argv);
return a.exec();
}
void Application::Application(int &argc, char **argv)
{
m_pComplexSystem = new ComplexSystem();
m_pComplexSystem->configure();
CALLGRIND_START_INSTRUMENTATION;
m_Configurator->start();
}
Application::~Application()
{
CALLGRIND_STOP_INSTRUMENTATION;
CALLGRIND_DUMP_STATS;
m_pComplexSystem ->stop();
delete m_pComplexSystem;
m_pComplexSystem = 0;
}
由于某种原因,定义被忽略了,我得到了整个构造函数的性能度量以及在 ComplexSystem 成员的 configure() 调用中完成的所有事情。
所以现在我使用这个似乎有效的代码:
int main(int argc, char *argv[])
{
Application a(argc, argv);
CALLGRIND_START_INSTRUMENTATION;
int result = a.exec();
CALLGRIND_STOP_INSTRUMENTATION;
CALLGRIND_DUMP_STATS;
return result;
}
虽然和我最初的尝试不完全一样,但我现在可以开始找慢函数了。