【发布时间】:2012-01-06 02:57:32
【问题描述】:
我正在尝试在一段非常大的代码中分别使用 GetTickCount() 对多个函数进行计时,以找出瓶颈的确切位置。我可以成功地为整段代码计时。我正在努力解决的是我在哪里添加计时功能来测量每个单独功能的时间。我是否在声明函数或定义函数时或在调用它们的 main () 内插入计时器。 任何帮助将非常感激。 谢谢你。
【问题讨论】:
标签: c++ performance function gettickcount
我正在尝试在一段非常大的代码中分别使用 GetTickCount() 对多个函数进行计时,以找出瓶颈的确切位置。我可以成功地为整段代码计时。我正在努力解决的是我在哪里添加计时功能来测量每个单独功能的时间。我是否在声明函数或定义函数时或在调用它们的 main () 内插入计时器。 任何帮助将非常感激。 谢谢你。
【问题讨论】:
标签: c++ performance function gettickcount
您在运行时调用它们时为它们计时,例如:
int main(int argc, char** argv)
{
...
DWORD start = GetTickCount();
CallAFunction();
DWORD end = GetTickCount();
DWORD elapsed = (end >= start) ? (end - start) : ((MAXDWORD - start) + end);
...
}
衡量代码时序的更好方法是使用分析器,而不是在代码本身中编写逻辑。分析器挂钩到运行时进程并将自己的代码插入到函数本身中。然后它不仅可以跟踪函数运行的时间,还可以跟踪它们被调用的次数,哪些函数调用了哪些函数,记录调用堆栈等。所有这些都无需编写任何额外的代码。
【讨论】: