2016-10-17 88 views
0

如何使用Xcode分析和優化C++編譯時間?Xcode - 配置文件和優化C++編譯時間

我目前正在基於Cocos2d-x與250+源文件的C++遊戲項目。編譯時間(沒有Cocos2d-x)目前大約爲3.5分鐘,我想知道編譯器花費的最多時間以及我可以做些什麼來優化它。

我已經做了最明顯的事情,如總是做前向聲明並應用「包含你使用的」範例。

該編譯器是Xcode 8的最新Clang/LLVM。

+0

你使用預編譯頭文件嗎?這讓我在沒有他們的情況下繼承了一個項目的加速因子4。 – gnasher729

回答

2

您可以隨時嘗試ccache。如果我在項目設置中重新定義CC,則可以在Xcode中正常工作。 https://ccache.samba.org/

因此,例如,通過brew install ccache安裝ccache。 然後,讓你在你的項目的源代碼控制的腳本是這樣的:

#!/bin/sh 
if type -p /usr/local/bin/ccache >/dev/null 2>&1; then 
    export CCACHE_CPP2=true 
    exec /usr/local/bin/ccache "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "[email protected]" 
else 
    exec "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "[email protected]" 
fi 

稱之爲「ccache的,鐺」的例子。將此腳本存儲在項目的源代碼控制中意味着您可以在未安裝ccache的另一臺計算機上檢查該腳本,然後使用默認的Clang編譯器。

然後在Xcode中,在您的項目的構建設置下,添加「用戶定義」設置「CC」,並將其設置爲您腳本的路徑。例如,「${PROJECT_DIR}/ccache-clang」。

這篇文章是一個很好的資源,讓這個去。 https://pspdfkit.com/blog/2015/ccache-for-fun-and-profit/

+0

但是Xcode不是已經這麼做了嗎?你在哪裏重新定義了CC和哪些價值?它有助於分析或優化?請詳細瞭解你到底做了什麼以及你做了什麼;) – keyboard

+0

Xcode避免在文件重新編譯時進行重新編譯,但ccache實際上可以實現從磁盤緩存中編譯,所以即使是乾淨的重建也會更快。我添加了更詳細的說明 – yano

+0

我已經設置了它,它似乎工作得很好,但它沒有帶來真正的重大改進(但)。我在這裏和那裏都有一些緩存命中,但大多數時候它編譯新的。我也試着玩文章中的設置。你對我有一些額外的提示嗎? – keyboard

1

嘗試創建一個目錄/tmp/xcode_build_timings,並重建您的項目。 (不要忘記之後刪除它)。

+0

這聽起來很有趣......您能否更具體一些?它有什麼作用?文件夾應該放在哪裏等等? – keyboard

+0

我提供了文件夾的確切路徑。所以我不明白你的意思是「文件夾應該在哪裏」? 然後嘗試在創建此文件夾後建立您的項目,並檢查內容。它應該爲構建提供時間。 – Joky

+0

好的,有道理。 – keyboard