【windows】MinGW編譯速度過慢
自從幾年前我開始在Windows7和LinuxUbuntu中使用Qt以來,它總是編譯得很快,而MingW則用於Windows。但在過去幾年左右的時間裡,也許是由於qt和mingw版本的更新,我開始發現windows中的編譯速度減慢了。我做了一些研究,試圖找出為什麼mingw開始變得比linux慢(這不是以前的事!)人們告訴我的一切都是,mingw在windows中速度較慢,如果可能的話,最好使用linux。
由於我想繼續我的專案,我遵循了建議,因為我一直在使用Linux相對沒有問題。現在的情況是,我必須回到windows(現在更新到windows 10)來對這個作業系統進行視覺化更正,我需要再次與mingw合作,必須面對與以前相同的問題。
但不知什麼原因,明明的遲鈍似乎變得更糟了!以前我至少能在4分鐘內編譯這個應用程式,而現在我最後一次嘗試這個應用程式花了38分鐘才放棄並進入睡眠狀態,而這個專案只需要1:03分鐘就可以在Linux中編譯(在相同的編譯配置下)!
好吧,我仍然知道mingw的緩慢,但是在web上對這個問題的快速研究表明,這太慢了:所有的回溯測試都可以在這裡的其他執行緒中找到,因此顯示編譯一個專案的時間最多增加2-3倍,而不是38x+!!
所以我想知道我的窗戶可能會有什麼樣的問題,使這種誇張的緩慢發生。我知道我最終安裝了至少4個不同版本的mingw;這會帶來問題嗎?
有趣的是,當使用-j選項進行編譯並在process explorer旁邊檢視qt creator中的編譯輸出日誌時,有時編譯過程會暫停10秒或更長時間,CPU使用率從大約100%下降到接近5%,而不會發生任何事。直到它突然繼續編譯過程。我確信這種持續的停頓是高於平均水平的時間的一部分,但我不知道明威為什麼表現出這種行為。
解決辦法
你可能想看看時間花在哪裡了。
有很多工具可以讓您捕獲某個流程正在執行的操作,我只列出其中兩個:
ProcMon
XPerf或其successor
但要分析這些工具生成的報告,您需要有相當深入的理解。如果這不能幫助暫時禁用其他正在執行的服務和程式(如果您想知道是哪個程式導致問題),或者一次禁用所有這些服務和程式。
通過sysinternals檢視taskmanager或procexp顯示的cpu使用峰值可能也有助於識別那些阻塞cpu的元件。
如果您的防病毒程式是導致衝突的原因,導致編譯速度慢到可以定義異常,那麼防病毒程式將不會掃描某些程式或路徑。
因此,首先使用禁用的防病毒軟體或甚至從乾淨的實時啟動Windows CD嘗試編譯過程可能更容易。
