2010-07-10 145 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 ;