2010-07-10 72 views
2

下面列出的程序在屏幕上输出0。为什么?这是否意味着我的电脑速度很快或者代码中有什么错误?程序运行时间

#include <iostream> 
#include <cstdio> 
#include <ctime> 
using namespace std; 

int main(){ 
    int j=0; 
    clock_t start=clock(); 
    for (int i=0;i<22220;i++){ 
     i++; 
     j++; 
     j+=i; 
     // sleep(10); 
    } 

    clock_t final=clock()-start; 
    cout<<final/ (double) CLOCKS_PER_SEC<<endl; 

    return 0; 
} 
+1

你为什么要在for循环迭代器部分和正文中进行i ++操作?为什么j ++和j + = i? – eruciform 2010-07-10 20:23:46

+0

并且您是否试过打印出刚开始和结束时看到的内容? – eruciform 2010-07-10 20:24:06

+0

它只是我想花一些时间来执行这些陈述 – 2010-07-10 20:41:13

回答

2

注意clock()不返回挂钟时间,而是与处理时间在睡觉什么也不做实际上是(产生控制操作系统)做。

试着去除睡眠,并增加循环次数。

3

不知道这一点,你可能要检查的输出汇编代码,但因为无论是我还是法官在程序的其余部分被实际使用,编译器可能不会产生这些指令的任何代码。

0
#include <windows.h> 

SYSTEMTIME startTime; 
GetSystemTime(&startTime); 
WORD startmillis = (startTime.wSecond * 1000) + startTime.wMilliseconds; 

// Do some stuff 

SYSTEMTIME endTime; 
GetSystemTime(&endTime); 
WORD endmillis = (endTime.wSecond * 1000) + endTime.wMilliseconds; 

WORD millis = startmillis - endmillis ;