一些帮助解释我的游戏的GlowCode配置文件

时间:2012-04-06 22:00:51

标签: c++ windows multithreading profiling glowcode

我们的前3个函数都显示为线程同步对象;主要是WaitForSingleObject()

这个函数是否非常繁重,即使用0调用来检查线程的状态?非常关注这些函数的值,其自身时间比其他任何其他值的值都要多出2个数量级。或者Glowcode可能只是吓坏了这个函数,因为当代码指针看起来很多时,代码指针恰好就在那里。

1 个答案:

答案 0 :(得分:0)

首先,Don't Look At Self-Time

它存在的唯一原因是因为有人可能会编写在自己的代码中在紧密的CPU循环中花费太多时间的代码。 您的程序是否花费所有时间反转矩阵或进行FFT?

发明了 gprof 的全部原因,随之而来的是整个雪崩的剖析器,真正的软件包含许多子程序,这些子程序在一个大老鼠的巢中互相调用,而且到目前为止最简单的方法花费太多时间是为了使子程序调用可以避免。 自我时间不会暴露那些。

接下来,无论您是在查看Wall时间还是CPU时间,如果WaitForSingleObject()在很长一段时间内处于活动状态,这意味着您的线程主要在等待某些事情。 您需要找出

有一种非常简单的方法可以找到答案。只需按下Pause,Ctrl-C,Esc或任何键使其停止在其轨道中,然后查看堆栈。 调用堆栈上的每行代码都代表一个未完成的请求,如果没有提出请求,程序将不会等待。 这就是你怎么知道它在等什么。

如果碰巧碰到它不在WaitForSingleObject()中,可以再次执行,也许几次。 这似乎比分析更省力,但您可以在发现问题或做一些简单的事情之间做出选择。