Just My Life & My Work

[iOS] 改善Xcode編譯速度

專案已經開發超過一年半,累積的檔案數量已將近2500個(可見文章:專案檔案數遞增),想必日後編譯速度將會越來越慢,會深刻地影響我們開發的效率,尤其是在要了解前人所寫的程式碼,我們總是會稍微修改一下變數/參數來嘗試是否為增修的關鍵目標,所編譯頻率相當大,三不五時就要按Command+R

我嘗試過許多改善開發效率的方法,其中有三個可以嘗試:

  1. 提高XCode編譯時使用的執行緒數
  2. 將Debug Information Format改為DWARF
  3. 將Build Active Architecture Only改為Yes

1和3在我們的專案早已設定完畢,只剩下2可以嘗試,沒想到效果超好,提升幾乎10倍快的編譯速度!

可看到編譯與除錯的時間點,有時候會很頻繁測試,時常要等3分鐘這麼久呀~

在此來詳細說明:

2. 將Debug Information Format改為DWARF

在專案對應Target的Build Settings中,找到Debug Information Format這項,將Debug時的DWARF with dSYM file改為DWARF

這項設定目的是否將除錯資訊加入到可執行檔案中,改為DWARF後,如果程式崩潰,將無法輸出崩潰位置對應的函式堆疊,但由於Debug模式下可以在XCode中檢視除錯資訊,所以改為DWARF影響並不大。這一項更改完之後,可以大幅提升編譯速度。

需要注意的是,將Debug Information Format改為DWARF之後,會導致在Debug視窗無法檢視相關類型別的成員變數的值。當需要檢視這些值時,可以將Debug Information Format改回DWARF with dSYM file,clean(必須)之後重新編譯即可。

另兩項大大們也能嘗試一下~

1. 提高XCode編譯時使用的執行緒數

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4 

XCode預設使用與CPU核數相同的執行緒來進行編譯,但由於編譯過程中的IO操作往往比CPU運算要多,因此適當的提升執行緒數可以在一定程度上加快編譯速度。本人採用的是4核的CPU,將執行緒數改為8後編譯速度略有提升。

3. 將Build Active Architecture Only改為Yes

在工程對應Target的Build Settings中,找到Build Active Architecture Only這一項,將Debug時的No改為Yes。

這一項設定的是是否僅編譯當前架構的版本,如果為No,會編譯所有架構的版本。需要注意的是,此選項在Release模式下必須為No,否則釋出的ipa在部分裝置上將不能執行。這一項更改完之後,可以顯著提高編譯速度。

HappyMan我在設定完第二個項(因為第一和三項早已設定好)之後,編譯時間在完全沒有編譯過的情況是5分鐘左右。若已有編譯過的情況1-3分鐘不等,現今已改善為最快不到10秒,因此效果還是相當明顯唷~

我總是想在生產力最好的時候盡快地完成任務,而不是讓腦子空轉在等待編譯。回想過去實際寫程式的時間,可能跟編譯總時間差不多啊~人生沒有太多時間可以浪費,必須要善用工具來讓工作更加順手,其餘的時間就來增進技術能力吧!

在此不免呢喃一下,就是我們專案架構實在太多相依,使得Trace Code要花費較多時間,僅管如此規範讓編程統一不紊亂。可以參考文章:視覺化專案相依關係 (Dependency Visualizer)

參考:加快XCode的編譯連結速度,XCode編譯速度慢的解決方案

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: