iphone - build time analyzer for xcode




如何在XCode中減少構建時間/加快編譯時間? (10)

Xcode用於執行任務的線程數默認為CPU擁有的相同內核數。 例如,具有Intel Core i7的Mac有兩個內核,因此默認情況下Xcode最多使用兩個線程。 由於編譯時間通常是I / O綁定而不是CPU綁定,因此增加Xcode使用的線程數可以為編譯提供顯著的性能提升。

嘗試將Xcode配置為使用3,4或8個線程,並查看哪個線程為您的用例提供了最佳性能。

您可以設置Xcode從終端使用的進程數,如下所示:

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4

有關更多信息,請參閱Xcode用戶默認值

通常可以使用哪些策略來減少任何XCode項目的構建時間? 我最感興趣的是XCode特定策略。

我正在使用XCode進行iPhone開發,我的項目正逐漸變得越來越大。 我發現編譯/鏈接階段開始花費比我想要的更多的時間。

目前,我是:

  • 使用靜態庫使我的大部分代碼都不需要在每次清理和構建我的主項目時編譯

  • 已經從我的應用程序中刪除了大部分資源,並儘可能在iPhone模擬器中使用硬編碼文件系統路徑進行測試,因此我不需要在我對其進行更改時不斷打包資源。

我注意到“檢查依賴關係”階段似乎比我想要的時間更長。 任何減少這一點的提示都將受到讚賞!


一個字:TmpDisk

  1. 使用TmpDisk創建1.5Gb RAM磁盤
  2. 將Xcode>首選項>位置>派生數據更改為/Volumes/1.5Gb/xcode數據
  3. 享受速度!

如果您沒有使用8GB內存,請立即升級。

我剛剛將我的macbook pro從4GB升級到8GB。 我的項目構建時間從2:10到0:45。 我被改進所震驚。 它還可以在索引等方面為研究快照和一般Xcode性能進行Web瀏覽。


如果整個項目在每次運行時都重建了,那可能是XCode 7.0中的錯誤<= 8.1給你帶來了困難。

將用戶定義的構建設置HEADERMAP_USES_VFS創建為YES會將macbook編譯時間從每次75秒減少到25秒。 有關詳細信息,請參閱Xcode 8執行完整項目重建


快速注意關於'投入更多硬件'的方法..

總結:通過進行重大的硬件升級,我的速度提升了很多

測試:在克隆的macbooks上構建/運行完全相同的項目(唯一的區別應該是他們的硬件)

舊Macbook Air(1.86GHZ Core 2 Duo僅2GB RAM)與全新Macbook Pro(2.3GHZ Core i7 8GB RAM)

建立IPHONE 3GS
Macbook Air 1:00 - 1:15
Macbook Pro~1:00

=> 0到0:15的速度增加

在IPHONE 4S上建造
Macbook Pro~0:35
Macbook Air~0:50

=> ~15秒的速度增加

**部分測試:兩台機器之間的SIMULATOR的構建時間之間存在顯著差異


在我的持續經驗中......當你對PHONE硬件做出重大改變時你將獲得顯著的增長(即在3GS和iphone 5(或者4)上建立時間)。至少在我的經驗中,限制因素是手機硬件(不是電腦硬件)。

所以......獲得最快的構建時間..
option1)編寫代碼並在快速計算機上運行模擬器或
選項2)使用最新的iphone在設備上構建


您提到為最常用的文件使用靜態庫來防止編譯。 您可以通過將標題放在經常使用的代碼中而不是在預編譯標頭中的靜態庫中來完成類似的操作。 至少他們只會被編譯一次。

如果項目中有多種編譯類型(例如Obj-C,Obj-C ++,C ++),必須小心避免問題。


我個人將編譯器切換到LLVM-Clang用於我的Mac開發項目,並且看到構建時間大幅減少。 還有LLVM-GCC編譯器,但我不確定這對構建時間有什麼幫助,如果LLVM-Clang不能用於iPhone應用程序編譯,那麼你也可以嘗試。

我不是百分之百確定在Linux上開發支持LLVM,但我想我記得在新聞源中閱讀它。 這不是您可以在代碼中實現的優化,但值得嘗試!



簡單回答:在本地網絡上添加另一台運行XCode的計算機。 XCode結合了distcc來做分佈式編譯。 它甚至可以使用Bonjour查找其他構建主機,這極大地簡化了配置過程。 對於大型構建,分發可以使您的速度增加幾乎與構建機器的數量成比例(2台機器佔用一半時間,3台佔用三分之一,依此類推)。

要了解如何進行此設置,您可以參考此開發文檔 。 它還具有其他有用的構建時間改進策略,例如使用預編譯頭和預測構建。

編輯:可悲的是,從Xcode 4.3開始Apple似乎已刪除此功能: http://lists.apple.com/archives/xcode-users/2012/Mar/msg00048.htmlhttp://lists.apple.com/archives/xcode-users/2012/Mar/msg00048.html

Xcode 5有一個可以執行CI的服務器版本,但我懷疑這會給臨時開發人員構建帶來任何好處。 但是,有一些未公佈的功能可以大大加快構建時間。


通常,您可以做的最大的事情是控制包含頭文件。

在源代碼中包含“額外”頭文件會大大減慢編譯速度。 這也傾向於增加依賴性檢查所需的時間。

此外,使用前向聲明而不是包含標頭包括其他標頭可以大大減少依賴項的數量,並幫助您的所有時間。





performance