我正在尝试使用clock()
方法创建一个简单的计时器。执行应用程序时,我的CPU使用率从0%跃升至25%。对于一个简单的程序,它只能在几秒钟内从60到0计数,但它有点过分。
我跟着这个:http://www.cplusplus.com/reference/clibrary/ctime/clock/
有什么理由吗?我可以使用任何替代方案吗?
答案 0 :(得分:3)
请参阅:
http://msdn.microsoft.com/en-us/library/ms686298%28v=vs.85%29.aspx
您引用的代码:
while (clock() < endwait) {}
显然只是在等待时间通过时咀嚼CPU,因此使用率为25%(一个核心)。
while (clock() < endwait) { Sleep(1);}
应该解决你的问题。
答案 1 :(得分:2)
// sleep for one second
boost::this_thread::sleep(boost::posix_time::seconds(1));
答案 2 :(得分:1)
我最好的猜测是,您的问题不是clock
函数,而是wait
函数。
循环直到达到一定时间。您应该使用实际暂停程序的函数,例如sleep
函数。
答案 3 :(得分:0)
使用这样的伪代码可以更好地运行大多数简单的时序测试:
start = get_time()
for 1 .. 10:
do_the_task()
end = get_time()
diff = end - start
print "%d seconds elapsed", diff
在Unix派生的平台上,gettimeofday(2)
返回一个自Epoch以来秒和微秒的结构,这使得一些相当不错的分辨率计时。在其他平台上,你将不得不寻找合适的时间来源。