如何加快XCode編譯速度讥邻?

做了這么久的老項(xiàng)目迫靖,被蝸牛般的編譯速度折磨很久。估計(jì)很多同學(xué)也會(huì)遇到類似的問題兴使。這里把平時(shí)自己如何加快XCode編譯速度的方法整理一下系宜。

1. 增加XCode執(zhí)行的線程數(shù)(??)

可以根據(jù)自己Mac的性能,更改線程數(shù)設(shè)置5defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 5

另外也有一個(gè)設(shè)置可以開啟:defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

XCode默認(rèn)使用與CPU核數(shù)相同的線程來進(jìn)行編譯发魄,但由于編譯過程中的IO操作往往比CPU運(yùn)算要多盹牧,因此適當(dāng)?shù)奶嵘€程數(shù)可以在一定程度上加快編譯速度。

2.將Debug Information Format改為DWARF(??????)

在工程對(duì)應(yīng)TargetBuild Settings中励幼,找到Debug Information Format這一項(xiàng)汰寓,將Debug時(shí)的DWARF with dSYM file改為DWARF

如圖:


這一項(xiàng)設(shè)置的是是否將調(diào)試信息加入到可執(zhí)行文件中苹粟,改為DWARF后有滑,如果程序崩潰,將無法輸出崩潰位置對(duì)應(yīng)的函數(shù)堆棧嵌削,但由于Debug模式下可以在XCode中查看調(diào)試信息毛好,所以改為DWARF影響并不大。這一項(xiàng)更改完之后苛秕,可以大幅提升編譯速度肌访。

比如在目前本人負(fù)責(zé)的項(xiàng)目中,由于依賴了多個(gè)Target艇劫,所以需要在每個(gè)TargetDebug Information Format設(shè)置為DWARF吼驶。順便提一下,如果通過Cocoapod引入第三方則Debug Information Format默認(rèn)就是設(shè)置為DWARF的店煞。

  • SDWebImage通過Cocoapod``Debug Information Format的默認(rèn)設(shè)置

注意:將Debug Information Format改為DWARF之后旨剥,會(huì)導(dǎo)致在Debug窗口無法查看相關(guān)類類型的成員變量的值。當(dāng)需要查看這些值時(shí)浅缸,可以將Debug Information Format改回DWARF with dSYM fileclean(必須)之后重新編譯即可魄咕。

3.將Build Active Architecture Only改為Yes(??)

在工程對(duì)應(yīng)TargetBuild Settings中衩椒,找到Build Active Architecture Only這一項(xiàng),將Debug時(shí)的NO改為Yes哮兰。

這一項(xiàng)設(shè)置的是是否僅編譯當(dāng)前架構(gòu)的版本毛萌,如果為NO,會(huì)編譯所有架構(gòu)的版本喝滞。需要注意的是阁将,此選項(xiàng)在Release模式下必須為NO`,否則發(fā)布的ipa在部分設(shè)備上將不能運(yùn)行右遭。這一項(xiàng)更改完之后做盅,可以顯著提高編譯速度缤削。

4.設(shè)計(jì)編譯優(yōu)化等級(jí)(??)

不要再項(xiàng)目中或者靜態(tài)庫中使用-O4,因?yàn)檫@會(huì)讓Clang鏈接Link Time Optimizations (LTO)使得編譯更慢吹榴,通常使用-O3亭敢。

注意:在設(shè)置編譯優(yōu)化之后,XCode斷點(diǎn)和調(diào)試信息會(huì)不正常图筹,所以一般靜態(tài)庫或者其他Target這樣設(shè)置帅刀。

4.資源整合(????)

4.1 將常用的代碼及文件打包成靜態(tài)庫

4.2 添加預(yù)編譯文件,把常用的頭文件放到預(yù)編譯文件里面

4.3 能用@class就用@class

參考

To speed up the XCode compile and link speed (200%+)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末远剩,一起剝皮案震驚了整個(gè)濱河市扣溺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓜晤,老刑警劉巖锥余,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異活鹰,居然都是意外死亡哈恰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門志群,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着绷,“玉大人,你說我怎么就攤上這事锌云≤剑” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵桑涎,是天一觀的道長彬向。 經(jīng)常有香客問我,道長攻冷,這世上最難降的妖魔是什么娃胆? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮等曼,結(jié)果婚禮上里烦,老公的妹妹穿的比我還像新娘。我一直安慰自己禁谦,他們只是感情好胁黑,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著州泊,像睡著了一般丧蘸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遥皂,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天力喷,我揣著相機(jī)與錄音刽漂,去河邊找鬼。 笑死冗懦,一個(gè)胖子當(dāng)著我的面吹牛爽冕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播披蕉,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼颈畸,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了没讲?” 一聲冷哼從身側(cè)響起眯娱,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爬凑,沒想到半個(gè)月后徙缴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘁信,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年于样,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潘靖。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡穿剖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卦溢,到底是詐尸還是另有隱情糊余,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布单寂,位于F島的核電站贬芥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宣决。R本人自食惡果不足惜蘸劈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尊沸。 院中可真熱鬧威沫,春花似錦、人聲如沸椒丧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壶熏。三九已至,卻和暖如春浦译,著一層夾襖步出監(jiān)牢的瞬間棒假,已是汗流浹背溯职。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帽哑,地道東北人谜酒。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像妻枕,于是被迫代替她去往敵國和親僻族。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 如何提高XCode編譯速度: 提升編譯鏈接的速度主要有以下三個(gè)方式: 1. 提高XCode編譯時(shí)使用的線程數(shù) de...
    陳云峰閱讀 8,220評(píng)論 1 10
  • 公司在開發(fā)一個(gè)大項(xiàng)目的時(shí)候,這時(shí)候遇到一個(gè)很頭疼的問題愕掏,由于項(xiàng)目代碼較多度秘,每次都要編譯鏈接,調(diào)試的時(shí)候很浪費(fèi)時(shí)間饵撑,...
    劉應(yīng)閱讀 7,380評(píng)論 1 10
  • 寫在前面 新到一個(gè)公司剑梳,拉下代碼后,發(fā)現(xiàn)編譯時(shí)間在10分鐘以上滑潘,不知道為啥這么長時(shí)間垢乙,之前開發(fā)過程中沒有遇到過這樣...
    vincentgemini閱讀 6,605評(píng)論 0 8
  • 其實(shí)被這個(gè)問題困擾了好久,不過秉承著三分鐘熱度的新年新氣象众羡,還是要多弄懂一點(diǎn)(⊙_⊙)ゞ Symbols是什么東西...
    賣萌涼閱讀 55,231評(píng)論 22 164
  • 【轉(zhuǎn)載】曾夢(mèng)想仗劍走天涯 1.Xcode IDE概覽 說明:從左到右侨赡,依次是“導(dǎo)航窗格(Navigator)->邊...
    06a6a973d7ab閱讀 3,839評(píng)論 2 20