2011-03-09 32 views
0

爲了優化我的應用程序,我在我的qmake項目文件中測試了不同的編譯器(VS2008)選項。如果我將編譯器優化標誌添加到我的應用程序,我是否也應該使用相同的標誌重建我的工具包?

QMAKE_CXXFLAGS += /MP /Ox /arch:SSE2 /GL 

但是它發生,我認爲雖然我得到了優化的二進制我的應用程序,Qt的DLL的,它依賴於不以同樣的方式進行了優化。

我應該重新編譯我的Qt工具包以獲得相同的好處嗎?如果是的話,所有的開發項目都應該優化所有的依賴項?

+0

編譯器優化只對熱點很重要 - 程序計數器(IP)註冊表花費相當大的時間的代碼。因此,如果你的個人資料或隨機暫停,你可以看到最好的地方,如果有的話。許多應用程序幾乎全部用於調用系統例程,在這種情況下,尋找可比編譯器優化避免的調用會帶來更多好處。 – 2011-03-09 16:19:16

回答

1

我不認爲重新編譯Qt在這裏有意義。通常情況下,(釋放模式)DLL將在大多數用途上進行充分優化編譯。通常Qt用於GUI,如果你的應用程序由於Qt代碼速度不夠快而導致性能問題,那麼還有其他原因。專注於找到這些東西,而不是浪費時間來優化代碼,這些代碼只負責1%的應用程序運行時(當然,1%只是一個猜測,使用一個分析器來查明你是否真的想知道)。

有時庫有兩種類型:一個是生產DLL,一個是調試版。您應該確保,在發佈模式下構建時,適當的DLL會被鏈接。

相關問題