【iOS Tip】提高Xcode編譯速度


原文地址: http://nszzy.me/2016/03/20/reduce-xcode-build-times/

平常在調試工程的時候, 特別是大工程, 浪費在編譯上的時間加起來也是個不小的數目. 我戲成它為帶薪編譯. 帶薪編譯一來呢浪費公司資源, 二來使得開發效率大大降低. 所以提高Xcode的編譯速度還是非常有必要的. 關于通過更改一些Xcode的配置來提升編譯速度這篇文章已經列舉除了幾個不錯的方法, 這里就不再多說.

這篇文章主要講的是從硬件方面來提升Xcode的編譯速度. 因為對比了現在日常使用的Mac mini和MacBook Pro, 在CPU和內存基本沒有差別的情況下, 相比MacBook Pro的SSD, Mac mini的機械硬盤的表現實在是慘不忍睹. 這也是拖慢了編譯速度的主要元兇. 所以, 去換一個SSD吧.(Excuse me?)

本文所講的方法理論上編譯速度是可以超過SSD的. 在說具體方法之前, 先來了解一下拖慢編譯速度的元兇Derived Data:

Derived Data


Derived Data是Xcode自動生成的一些派生數據的文件夾. 里面包含有一些索引文件、Log、編譯時產生的文件. 編譯時候產生的文件包括:

  • 第三方庫的.a文件
  • 應用程序.app文件
  • 保存函數地址映射信息的中轉文件.dSYM文件

所以, 寫這些數據的時候, 寫得越快, 編譯的時間也就能越少. 如何讓數據寫入得更快呢? 可以把Derived Data的路徑換到內存中. 換句話說, 將Derived Data的讀寫從硬盤移動到內存中.

在內存中創建虛擬磁盤


What? 內存當硬盤用? 是的你沒聽錯, 其實OS X系統是允許在內存中創建一個可以高速存取的虛擬磁盤的. 通過以下兩種方法可以實現在內存中創建虛擬磁盤:

1. iRamDisk

在AppStore上找到了這么一個神器, 叫iRamDisk, 14.99刀. 使用它可以非常簡單地創建一個Xcode的DerivedData的虛擬磁盤, 如下. 都是圖形化界面, 很好操作, 就不多贅述了.


這里分享一個破解版(提取碼9u38)僅供學習交流使用, 建議購買正版支持開發者.

2. 命令行創建

① 創建RAM disk并分配空間
size的計算公式 size = 需要分配的空間(M) * 1024 * 1024 / 512. 例如下面分配的空間為2GB: 2048 * 1024 * 1024 / 512 = 4194304.

$ hdid -nomount ram://4194304

執行完這個命令之后, 終端會輸出/dev/diskN, N是一個數字, 記下它, 后面兩步有用.

② 在RAM disk上創建HFS
給虛擬磁盤創建名字, 如下為DerivedData, 并將rdiskNN改為第一步中的N的數字. (注意: rdiskN不要錯寫成diskN)

$ newfs_hfs -v DerivedData /dev/rdiskN

③ 把虛擬磁盤安裝到Xcode的DerivedData目錄下
如下命令, 同樣把diskN中的N替換成第一步中N的數字. (注意: 此時是diskN)

$ diskutil mount -mountPoint ~/Library/Developer/Xcode/DerivedData /dev/diskN

這樣就大功告成了! 不出意外就可以在桌面(或者Finder)上看到DerivedData這個盤. 如果不要虛擬磁盤了, 可以在Finder中推出這個磁盤, 或者執行以下命令卸載這個磁盤:

$ diskutil umount /dev/diskN

總結


1. 優點:

  • 編譯速度加快.
  • 創建虛擬磁盤后, 并不是直接占用掉所有分配的空間, 而是根據虛擬磁盤中的文件總大小來逐漸占用內存.

2. 缺點:

  • 每次關閉系統之后, 虛擬磁盤將會被卸載, 下次開機后需要重新創建虛擬磁盤. 同時因為Derived Data已經被刪除.
  • 內存有限, 不宜創建太大的虛擬磁盤, 需要在系統性能和需要的虛擬磁盤空間中找一個平衡點.

3. 可能遇到的坑

  • 如果創建的虛擬磁盤已滿, 會導致編譯的失敗. 此時清除掉Derived Data后重新編譯, 就算有足夠的空間也還是有可能會導致編譯失敗. 重啟Xcode可以解決此問題.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容