for (long int z=0;z<50000;z++); 就这条语句要执行多长时间???大家估计一下吧!!!

liuyecai 2001-01-08 11:53:00
加精
...全文
326 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin_qing 2001-01-11
  • 打赏
  • 举报
回复
跟我的结果很相近啊,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈~~~

除掉中断占用/任务切换的时间,应该和我计算的差不多了
Kevin_qing 2001-01-10
  • 打赏
  • 举报
回复
编译后大约为
lable1:
inc eax //1
cmp eax,50000 //2
jb lable1 //2

估计循环一遍需要5个时钟周期。
50000*5(估计)~=250000个时钟周期
在主频400mhz的机器上大概为250000/400M~=0.000615sec

不过实际可能被编译器直接优化掉了,根本不执行。


呵呵~~~个人观点,不一定正确啊
lyc78 2001-01-10
  • 打赏
  • 举报
回复
fleg:
够精确的,你是怎样估算出来的,能否知之?
milefo 2001-01-10
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main( void )
{
long i=50000000l;
clock_t start, finish;
double duration;
printf( "Time to do %ld empty loops is ", i );
start = clock();
for (long int z=0;z<i;z++);
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%lf seconds\n", duration );
}

每次不定,但也差不多!
fleg 2001-01-10
  • 打赏
  • 举报
回复
0.001243s,够精确吧...
wuchuncai 2001-01-10
  • 打赏
  • 举报
回复
timeBeginPeriod(1);
char string[10];
int timestart;
timestart=timeGetTime();
for (long int z=0;z<50000;z++);
timestart=timeGetTime()-timestart;
itoa(timestart,string,10);
AfxMessageBox(string);
timeEndPeriod(1);

//在PII400上结果0.8ms左右
silver 2001-01-10
  • 打赏
  • 举报
回复
我猜是 1秒钟,呵呵
milefo 2001-01-09
  • 打赏
  • 举报
回复
如果还不行,就把迭代次数扩大若干倍试试,但精度不一定高,
也可以看看时间精度能不能提高!?
milefo 2001-01-09
  • 打赏
  • 举报
回复
int start = time(NULL);
for (long int z=0;z<50000;z++);
printf("\nThe elapsed time was %d seconds for %d times NULL iterations",
time(NULL) - start, z);
就行了!
狐帝 2001-01-09
  • 打赏
  • 举报
回复
这可难说,这个程序在不同的编译器下、不同的编译设置下、不同的操作系统、不同的硬件平台下效果都不一样的。

如果要相对精确的测算时间,可以对系统的8254定时器编程计算。
对于Win NT平台,可以用QueryPerfomanceCounter(好像是这个名字)来实现。
liuyecai 2001-01-09
  • 打赏
  • 举报
回复
不精确!!
谁还有高见!!
sxbyl 2001-01-08
  • 打赏
  • 举报
回复
386/33呢还是PIII850
liuyecai 2001-01-08
  • 打赏
  • 举报
回复
这是个难题吗????????!!!!!!!!!!!
wwwunix 2001-01-08
  • 打赏
  • 举报
回复
为什么?我在SCO下用CC编译的。
liuyecai 2001-01-08
  • 打赏
  • 举报
回复
到底有谁能正确地估计一下啊??
约等于0等于没回答!!
wwwunix 2001-01-08
  • 打赏
  • 举报
回复
约等于0秒。
Fesd 2001-01-08
  • 打赏
  • 举报
回复
如果是VC++的Release版本, 0秒
liuyecai 2001-01-08
  • 打赏
  • 举报
回复
386/33呢?
486/80呢?
586/133呢?
686/500呢?
686/800呢?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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