2012-07-18 76 views
1

當我運行我在一臺機器上寫的應用程序,Windows 7 Professional 32位SP 1時,它運行得很好,並使用系統中100%的CPU。應用程序不使用100%的CPU

但是,當我在Windows Server 2008上運行相同的應用程序時,我看不到100%的CPU使用率。

爲何不使用100%的CPU,以及,我怎樣才能讓這個它呢?

+3

編寫效率較低的代碼。 – 2012-07-18 08:33:55

+0

@Cylian關心細節爲什麼你回滾?這個問題目前使這個問題聽起來非常具體,我編輯它,使它更通用。 – thecoshman 2012-07-19 07:59:59

+0

您的應用程序是多線程的還是兩臺機器之間的內核數量有差異? – IvoTops 2012-07-21 22:03:45

回答

6

哦,通常你不希望使用100%的CPU,只要你想離開你的自我的頭部空間,因爲當你增加負擔是。通常程序不會一直使用CPU,因爲它將開始受到其他因素(通常是I/O)的限制。

就拿一個GUI應用程序,直到用戶點擊的東西,在什麼好說的了做的,其他則繼續等待用戶輸入。

你可能會愚蠢地寫爲

while(true){ 
    if(there is user input){ 
    use the user input 
    } 
} 

這將消耗更多的CPU,因爲它會非常快運行這個循環。因此,一位敏銳的購物者可能會意識到,用戶可以應對,點擊和響應之間的延遲高達50毫秒。所以在添加某種睡眠,如...

while(true){ 
    if(there is user input){ 
    use the user input 
    } 
    sleep for 50 ms 
} 

重要的是給CPU一個機會去做其他的事情,因爲他們是很重要的,否則你的程序是這樣的胖孩子誰只是將他的頭放在冰淇淋機下面,絕不讓其他人吃一些美味的冰淇淋。

編輯

我愛我的一個比喻,所以這裏是一個給你。

想想CPU使用率,道路和汽車,如果道路全部清零,那麼它是相對安全的爲您的愛車燒橡膠一樣快,因爲它可以在街上程序。汽車越多,他們就越需要爲對方收益,讓我們等待人們關閉或開啓。

如果您將道路(CPU)專用於賽車(遊戲)等場合,您將傾向於移除行人和非賽車(其他程序)等事物,以便儘可能快地安全行駛。

現在,我從來沒有說過我擅長比喻。並記住駕駛安全,並享受冰淇淋!

+0

thanx 4 ur響應。基本上我的問題是,當一個exe在一個系統中使用100%CPU(Windows 7)時,爲什麼不在其他系統(Windows Server 2008)上使用相同的系統?給定相同的一組輸入? – user1534113 2012-07-18 11:51:02

+1

@ user1534113:他實際上在第一條語句中給出了答案,該程序可以由一個平臺上的CPU和I/O或另一個平臺上的同步來限制。一般來說,I/O限制可以是HDD/RAM速度,總線帶寬和內核調用開銷之間的任何限制。 – KillianDS 2012-07-18 13:37:30

+0

Thanx很多4編輯答覆,標誌着我的問題的答案。 – user1534113 2012-08-16 09:54:47

1

CPU的百分比是一個程序使用具有什麼,用它做的是如何有效的。

它有一切與CPU做的只是感覺像在做其他事情的一些時間。

如果事實上,如果你的程序沒有任何I/O,CPU的百分比會下降,只是因爲當你的程序在等待的是,它沒有運行。