为什么我用“clock()”获得过多的CPU使用率?
问题描述:
我正在尝试使用clock()
方法创建一个简单的计时器。当应用程序执行时,我的CPU使用率从0%跳到25%。对于一个简单的程序来说,它只能在几秒内完成从60到0的计数,但这有点过分。为什么我用“clock()”获得过多的CPU使用率?
我跟随这名:http://www.cplusplus.com/reference/clibrary/ctime/clock/
的任何原因?有什么替代方案可以使用吗?
答
参见:
http://msdn.microsoft.com/en-us/library/ms686298%28v=vs.85%29.aspx
的代码你参考:
while (clock() < endwait) {}
显然只是咀嚼CPU在等待时间过去,因此, 25%的使用率(一个核心)。
while (clock() < endwait) { Sleep(1);}
应该解决你的问题。
答
// sleep for one second
boost::this_thread::sleep(boost::posix_time::seconds(1));
答
我最好的猜测是你的问题不是clock
函数,而是wait
函数。
它循环直到达到一定的时间。您应该使用实际挂起程序的功能,如sleep
功能。
答
最简单的计时测试是一些伪代码,这样更好的运行:
start = get_time()
for 1 .. 10:
do_the_task()
end = get_time()
diff = end - start
print "%d seconds elapsed", diff
在Unix衍生平台,gettimeofday(2)
返回与自纪元,这使得一些相当不错的秒和毫秒一个struct解决时间。在其他平台上,你必须寻找合适的时间源。
感谢您的回复。我是否需要为'sleep()'创建另一个线程?因为我需要定时器在同一时间运行。 – DeadCapacitor 2011-01-31 00:10:42