2013-08-31 152 views
1

我試圖計算毫秒三角洲是這樣的:計算增量不正確

int olddelta = 0; 
    int delta = 0; 
    const clock_t begin_time = clock(); 
    while (true) { 
     olddelta=delta; 
     delta=clock()-olddelta; 
     cout<<delta<<endl; 
} 

然而,這並不工作作爲增量絕對不超過4000,它似乎得到逐步提高。我做錯了什麼?

+0

這是什麼你*首先嚐試*做什麼? 'delta'應該是*每次迭代*或者在while循環的無限期生命週期中累積的。我*認爲*如果您在每次迭代中期待相似的數字,則您正在嘗試前者,如果是這樣,則這只是錯誤的算法。 – WhozCraig

回答

3

由於您使用的是clock(),您需要將它除以CLOCKS_PER_SEC以獲得以秒爲單位表示的結果。要獲得分數,投clock()double師前:

double olddelta = 0; 
double delta = 0; 
const double begin_time = clock(); 
while (true) { 
    olddelta = delta; 
    delta=clock()-olddelta; 
    cout << (delta/CLOCKS_PER_SEC) << endl; 
} 

如果要衡量一個迭代的時間,改變循環如下:

double olddelta = 0; 
double delta = 0; 
const double begin_time = clock(); 
while (true) { 
    double now = clock(); 
    delta = now - begin_time; 
    cout << (delta/CLOCKS_PER_SEC) << endl; 
    begin_time = now; 
} 
+0

這會改變顯示器,當然,但有些OP似乎「奇怪」,令人驚訝的是,這會導致它發出的輸出逐漸增加。 – WhozCraig

+1

@WhozCraig我懷疑這個數字越來越高,只有數字越來越高。 4000似乎是一個大數字,或者像一個小數字,如果一個人不知道它是什麼意思。我的物理老師曾經開玩笑地問三根頭髮是太多還是太少,他的回答是,如果它在頭頂上,太少了,如果它在一碗湯裏,那太多了; - ) – dasblinkenlight

+0

按照你的意見,我仍然得到一個輸出逐漸升高,例如1,2,3,4,5,6,7,8,9,10。此外,如果執行如上所述的簡單while循環,則會花費大量的時間大於一秒? – user2673108