專案已經開發超過一年半,累積的檔案數量已將近2500個(可見文章:專案檔案數遞增),想必日後編譯速度將會越來越慢,會深刻地影響我們開發的效率,尤其是在要了解前人所寫的程式碼,我們總是會稍微修改一下變數/參數來嘗試是否為增修的關鍵目標,所編譯頻率相當大,三不五時就要按Command+R。
我嘗試過許多改善開發效率的方法,其中有三個可以嘗試:
- 提高XCode編譯時使用的執行緒數
- 將Debug Information Format改為DWARF
- 將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)。
隨意留個言吧:)~