为什么我用“clock()”获得过多的CPU使用率?

时间:2011-01-31 00:01:02

标签: c++ timer cpu

我正在尝试使用clock()方法创建一个简单的计时器。执行应用程序时,我的CPU使用率从0%跃升至25%。对于一个简单的程序,它只能在几秒钟内从60到0计数,但它有点过分。

我跟着这个:http://www.cplusplus.com/reference/clibrary/ctime/clock/

有什么理由吗?我可以使用任何替代方案吗?

4 个答案:

答案 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)

使用boost::this_thread::sleep

// 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以来秒和微秒的结构,这使得一些相当不错的分辨率计时。在其他平台上,你将不得不寻找合适的时间来源。