2012-11-16 55 views
2

我完成了一個類項目的編程,但我仍然需要獲得運行時間。我嘗試了clock()函數,但它不起作用。如何獲取我的代碼的運行時間?

int main() 
{ 
    clock_t start_time=clock(); 
    (my codes) 
    clock_t end_time=clock(); 
    printf("The running time is %f", end_time-start_time); 
} 

我想這是使用時鐘功能的正確方法,是嗎?但我得到的只有0.000000。有人能告訴我正確的方法嗎?謝謝!

+0

相關:http://stackoverflow.com/questions/9871071/why-c-clock-returns-0 – Orbling

回答

1

clock_t不是float,而是一個整數類型,最有可能是long

所以你可以用%ldprintf()吧。


clock()不返回秒,但CPU的滴答聲。所以爲了得到秒數,由clock()返回的值應該被系統常數CLOCKS_PER_SEC分開。

+0

謝謝。但我仍然得到0.我想它應該工作,因爲我已經閱讀了一些相關的帖子,其他一些人也說它是這樣工作的。我不知道爲什麼它在我的代碼中失敗。其實我的代碼仍然有毛病,我一直試圖找出它們。 – phil

+0

嘗試另外打印自己的開始和結束時間。 @phil – alk

0

菲爾你以正確的方式(也許你也應該由CLOCKS_PER_SEC分割)

float time = (float)(end_time-start_time)/(float)CLOCKS_PER_SEC; 
    printf("The running time is %f", time); 

做,不要忘了投作爲「浮動」,因爲如果你有作爲的結果0.5將向下取整,由於整數除法爲0.0。

之後,你需要多少時間來執行程序?因爲據我所知,時鐘具有測量幾毫秒的時間的能力,所以如果你編程的時間少於幾毫秒,它很可能不會檢測到這個時間(時鐘非常適合用來測量相對幾秒的時間精度好)

+0

然而,一次演員就夠了。 – glglgl

+0

絕對正確,但我通常明確寫出所有必需的演員。對用戶和實踐也更加清楚。做這件事的原因很多。可能有很多關於這方面的討論。 – GameDeveloper

+0

謝謝。但我仍然得到0.我想它應該工作,因爲我已經閱讀了一些相關的帖子,其他一些人也說它是這樣工作的。我不知道爲什麼它在我的代碼中失敗。其實我的代碼仍然有毛病,我一直試圖找出它們。 – phil