2012-08-15 106 views
2

可能重複:
The C clock() function just returns a zero時鐘()函數總是返回0

我跑到下面的代碼來測試時鐘()函數的工作。我在Ubuntu 12.04上工作。

#include <stdio.h> 
#include <time.h> 
#include <iostream> 
using namespace std; 


double diffclock(clock_t clock1,clock_t clock2) 
{ 
double diffticks=clock1-clock2; 
double diffms=(diffticks*10)/CLOCKS_PER_SEC; 
return diffms; 
} 

int main() 
{ 
string name; 
int i; 
clock_t begin=clock(); 
cout << "Hi what is your name? "; 
getline(cin, name); 
clock_t end=clock(); 
cout << "Time elapsed: " << double(diffclock(end,begin)) << " ms"<< endl; 
return 0; 
} 

但是不管我花多少時間寫我的名字,經過的時間總是顯示爲0ms。

你能告訴我是什麼問題嗎?

+0

此外,使用你的代碼,我得到(不正確的)非0結果。 – Rollie 2012-08-15 20:03:40

回答

6

clock()返回滴答的數量已使用自「程序啓動」開始執行。沒有必要(在這個具體的例子中)獲得clock_t begin的值。

試着打印出beginend的值,看看它們是什麼。它們可能都是0或接近0,因爲等待用戶輸入不使用CPU時間。

無論哪種方式,我建議time()函數,因爲你不需要刻度精度。 http://www.cplusplus.com/reference/clibrary/ctime/time/

+3

「C標準允許程序開始時的任意值」,因此使用clock()的絕對值不正確 – jfs 2012-08-15 20:20:09

1

我想你應該使用time()函數。下面是它的工作方式:http://asust.in/007D 您只需調用它,它將返回自Unix時代(1970年1月1日)以來的秒數。

clock()函數返回自程序啓動以來的時鐘滴答數。這裏:http://asust.in/007E

+0

時間()可以被設置回來。要獲得流逝的秒數,可以使用連續的clock_gettime(CLOCK_MONOTONIC)調用之間的差異。 – jfs 2012-08-15 20:17:18