请教 为什么linux下 clock()函数总是返回0

MichaelJon123 2012-02-29 03:56:05
请教 为什么linux下 clock()函数总是返回0

clock_t nTimeStart=clock();//计时开始
sleep(10);
cout <<clock()-nTimeStart<<endl;/////结果输出0
...全文
490 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
justkk 2012-03-01
  • 打赏
  • 举报
回复
gettimeofday(&begin, NULL);
..
gettimeofday(&end, NULL);

end - begin
justkk 2012-03-01
  • 打赏
  • 举报
回复
可以考虑使用gettimeofday(),精确到微秒
gohome520 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 michaeljon123 的回复:]

诶,可以了。。但为什么不能像windows下
start = clock();
//一段程序
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
不行呢,而非要在循环里不断finish = clock()赋值呢;
[/Quote]
好像理解不太对。
其实3楼给的例子中,每个while循环都重新clock()赋值一下,这本身是为了让程序使用一些cpu。
你把这句话改成其他任何的代码都行的,比如printf("hello world\n");

也就是说:
start = clock();
while(i--)printf("hello world\n");
finish = clock();
应该也可以得到一个非0的时间,只要i够大。

至于你之前说,结果一直为0,可能是你要执行代码占用cpu很小或者基本不占用,所以会一直为0的。
MichaelJon123 2012-02-29
  • 打赏
  • 举报
回复
诶,可以了。。但为什么不能像windows下
start = clock();
//一段程序
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
不行呢,而非要在循环里不断finish = clock()赋值呢;
ADCC千月 2012-02-29
  • 打赏
  • 举报
回复
#include “stdio.h”
#include “stdlib.h”
#include “time.h”
库对么?给你发一个查运行时间的程序。你看看。

#include “stdio.h”
#include “stdlib.h”
#include “time.h”

int main( void )
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* 测量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n ", duration );
system( "pause ");
}
MichaelJon123 2012-02-29
  • 打赏
  • 举报
回复
一样的不行啊,就连单纯输出clock()的值也是0
同样的代码在windows下行,但在linux下就不行
justkk 2012-02-29
  • 打赏
  • 举报
回复
clock 返回的是CPU时间吧,你只是sleep(10),是不会导致CPU时间占用增加的。

试试
clock_t nTimeStart=clock();//计时开始
for(int i = 0, int a = 8; i < 100000; i++ )
a *= 3;
cout <<clock()-nTimeStart<<endl;

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧