2015-10-17 121 views
2

由於幾年前我開始在Windows 7以及Linux Ubuntu中使用Qt,並且在MinGW被用於Windows的情況下,它總能快速編譯。但在過去的幾年裏,也許要感謝Qt和MinGW版本的更新,我開始考慮Windows內部編譯速度的減慢。我做了一些研究,試圖找出爲什麼MinGW開始變得比Linux慢(這不是以前!),而且所有人都告訴我MinGW在Windows中速度較慢,如果可能的話,它會更好使用Linux。MinGW編譯過分緩慢

因爲我想繼續我的項目,所以我遵循了這個建議,並且因爲我使用的Linux相對沒有問題。現在的情況是,我必須回到Windows(現在已更新到Windows 10),以便對該操作系統進行可視化更正,並且我需要再次與MinGW一起工作,不得不面臨與以前相同的問題。

但由於某種原因,MinGW的速度似乎變得更糟!雖然在我至少能夠在大約4分鐘內編譯應用程序之前,現在我最後一次嘗試的時間是38分鐘,然後我放棄併入睡 - 這是一個只需要1:03分鐘的項目在Linux下編譯[在相同的編譯配置下]!

嗯,我還知道關於MinGW的的slowliness,但網絡上對這個問題的一個快速的研究表明,這只是慢:所有回測一個可以在其他線程發現這裏在做揭示最好的2x-3倍的時間來編譯一個項目,而不是38x +!

所以我想知道我的Windows可能會出現什麼樣的問題,以避免這種緩慢發生的情況。我知道我最終安裝了至少4個不同版本的MinGW;這可能會帶來問題嗎?

有趣的是,當編譯時使用-j選項並觀察Qt Creator中的Compile Output日誌以及Process Explorer時,有時編譯器簡單暫停10秒或更長時間,並且CPU使用率從其〜 100%接近5%,直到它突然繼續編譯過程。我相信這種不斷的停頓是上述平均時間的一部分,但我不知道MinGW爲什麼顯示這種行爲。

任何幫助表示讚賞。

回答

2

你可能想檢查時間花在哪裏。

有很多的工具,讓您捕捉到什麼一定的過程是幹什麼的,我僅舉兩個:

但要分析這些工具生成的報告需要相當深入的理解。如果這無助於暫時禁用其他正在運行的服務並逐步執行程序(如果您想知道哪個程序導致該問題)或一次禁用所有服務。 查看由sysinternals顯示的TaskManager或Procexp顯示的cpu使用率峯值可能也有助於確定阻止您的cpu的那些組件。 如果您的防病毒是導致編譯速度很慢的衝突的原因,您可以定義例外,那麼防病毒軟件將不會掃描某些程序或路徑。

因此,首先嚐試使用禁用的防病毒軟件進行編譯過程,或者使用乾淨的實時啓動Windows CD更容易。

+0

禁用防病毒軟件是一個好主意,因爲在此期間我對其進行了更改,它顯示了對清潔和運行'qmake'的前景。不幸的是,當它來到建築物時,與那些停頓一樣遲鈍,所以不是這樣。 – Momergil

+0

@Momergil我同意使用Process Monitor(如本答案中的建議)。它使您能夠輕鬆監視進程的活動(即編譯器和任何其他相關進程)。請記住只將輸出過濾到那些重要的過程。 –

+0

@很好,你對使用這些應用程序是正確的! :)我使用了ProcMon,並發現一個來自IBM的Raport Management Service軟件不是一種殺毒軟件,但工作方式非常類似,在編譯過程中不斷被調用;一旦完成,我能夠在2分鐘內完成這項工作! \ o/ 現在你的回答實際上並沒有回答這個問題,所以你可以稍微編輯一下,以便更多地關注其他軟件導致速度慢的原因嗎?然後我會接受你的答案!謝謝! – Momergil