2013-11-09 21 views
-3

運行有什麼辦法,當我運行與我的程序選項-ctime命令時,它告訴我下user節0秒?這是我們所稱的程序不是CPU綁定的嗎? 我有一個程序,我總是得到0.01秒。我已經做了一些優化,但仍然是一樣的。我的程序運行時間從8秒左右降至0.01秒,但我無法進一步減少。 這是關於活動時間捕獲的情況下采樣間隔的事情嗎?C:我可以讓我的程序的外觀在0秒

+2

我想一個人是在欺騙自己。非常奇怪的行爲 –

+5

你的程序將需要0秒的唯一方法是如果你不運行該死的東西。這是什麼樣的問題? –

+0

「運行時間從8秒左右降至0.01秒」 - 在優化之前它做了什麼,以及之後做了什麼? –

回答

1

不,「不受CPU約束」意味着應用程序的性能受到其他因素的限制,通常受其所做I/O量的限制。它並不涉及任何特定的運行時間,它只是意味着應用程序正在等待I/O完成或大部分時間。

由於time至少在Linux上顯示系統時間和用戶時間,用戶時間是衡量代碼實際運行的程度,而不是OS內核的代碼,如果用戶時間很長低於掛鐘時間,這是粗略的證據表明您的程序「不受CPU限制」。

這是一個奇怪的問題。但我想現在不需要回答你知道你誤解了「不受CPU限制」。

+0

好的。假設我正在使用getchar()從stdin讀取字符。我不知道還有多少人物尚未到達。所以按照CPU綁定的定義,我不能讓這個場景不受CPU限制,對吧?因爲我必須保持循環直到EOF。 –

+0

@DiwakarSharma如果你正在從用戶那裏讀取,它已經在程序的那個部分被非CPU綁定了,因爲你受限於用戶輸入的速度,而不是CPU的速度。如果你可能從重定向到stdin的文件中讀取數據,你應該考慮一些更高效的從stdin讀取數據的塊I/O方法。 –

+0

正如你所說,我正在將一個文件重定向到stdin,比如./a.out <文件 –

相關問題