2008-11-17 17 views
1

我有一個Win32控制檯應用程序,它正在做一些計算,在Compaq Visual Fortran中編譯(可能無所謂)。在VISTA中的Win32控制檯進程 - 10%的CPU,但非常慢

我需要同時運行它們中的很多。

在XP中,他們一起佔用90-100%的CPU,工作速度非常快。 在Vista中,無論我運行多少個CPU,它們的CPU佔用率都不會超過10%,而且工作速度也很慢。

有相當多的控制檯輸出正在進行,但現在非常多。 我可以最小化所有的窗口,它沒有幫助。 CPU基本上什麼都不做...

有什麼想法嗎?

更新:

不,這些不同的機器,但它們運行比較相同的硬件。 2.線程沒有使用,這是一個非常老的(20年)簡單的DOS應用程序,編譯在win32中。它應該計算迭代,直到它們相遇,消耗所有的時間。我的印象 - VISTA只是沒有提供更多的CPU

回答

0

它是你的Vista和XP相同的機器硬件?它可能只使用Vista的10%,因爲它不需要更多。你使用線程?我認爲它需要更多關於您項目的信息纔能有更好的想法。您是否嘗試使用分析器來查看發生了什麼?

+0

1.不,這些是不同的機器,但它們運行的​​硬件相同。 2.線程沒有被使用,這是一個非常老的(20年)簡單的DOS應用程序,編譯在win32中。它應該計算迭代,直到它們相遇,消耗所有的時間。我的印象 - VISTA只是沒有給它更多的CPU .. – badbadboy 2008-11-17 19:32:33

+0

不幸的是,印象不是測量。 – 2008-11-17 20:06:14

1

爲了闡明Daok的帖子 - 你的XP機器可能是CPU綁定的這個過程,而Vista的機器受到其他資源的約束。

澄清: 輸出到標準輸出(或其他)可能會減慢處理速度。 (如上下文切換或文件訪問等)

+0

在Daok的貼子發表評論。 關於「綁定」 - 有沒有辦法將VISTA「綁定」到這些進程?事情是 - 進程正在運行沒有睡眠或任何東西的長循環。所以他們只是沒有獲得更多的CPU。但其餘的 - 90%的CPU - 進入系統空閒狀態!:) – badbadboy 2008-11-17 19:38:02

2

您是否嘗試將控制檯輸出重定向到文件? 如果您的應用程序正在被寫入控制檯(有時不幸地發生這種情況),那麼重定向輸出應該會有所幫助,因爲寫入簡單文件比寫入控制檯要快得多。

你這樣做,像這樣

c:\temp> dir > output.log 

如果你真的不關心輸出可言,你可以把它扔掉,被重定向到nul。例如:

c:\temp> dir > nul 
+0

文件寫入(以及緩存,然後寫入)可以比控制檯輸出更快。 – Tim 2008-11-17 20:00:14

1

正如蒂姆暗示的那樣,控制檯輸出(標準輸出)極其昂貴。

我建議重新運行您的測試,同時將控制檯輸出重定向到每個進程的單獨日誌文件。如有可能,請在另一次測試運行中調低輸出的詳細程度。

除此之外,還有其他顯而易見的可能性:硬件是否有顯着不同,是否還有其他主要進程在運行,共享資源是否存在爭用?

除了顯而易見的,尋找一個非顯而易見的資源爭用,如共享文件。

但是我所看到的主要區域是,在兩種操作系統環境下編譯代碼的方式是否存在顯着差異 - 我想知道在Vista上運行時Fortran代碼是否會受到某種特殊處罰,如兼容模式。看看Vista是如何被支持的,以及你是否可以專門針對Vista編譯。同時尋找報告類似問題的人,例如bug報告,功能請求等。

2

Vista中有一個known "feature",它將某些控制檯應用程序限制爲32MB的RAM。我不知道由Compaq Visual Fortran編譯的這些文件是否受到這個「特性」的影響。

This article最近似乎在2008年10月更新,所以問題依然存在。

1

你的循環顯然不是簡單的計算。在那裏有一個阻塞的系統調用。僅僅因爲它在XP上工作並不意味着該應用程序是無bug的。

既然您可以最小化控制檯窗口,並看到沒有改善,我不會考慮這個問題。根據我的經驗,只有當控制檯窗口正在繪製文本時,控制檯輸出纔會降低程序的運行速度,而不是在最小化的情況下。

相關問題