ccache 真的能使你的 Xcode 飛起來育勺?

前言

因為每次打包時間有點長(9min左右)蕾额,組里要求進行優(yōu)化早芭,于是就有了ccache這個東東(當然組里的其他同學也進行了其它的優(yōu)化)。

簡單搜下ccache 發(fā)現(xiàn)文章并不多诅蝶,就那么幾篇逼友,然后對比了一下,都很雷同秤涩,感情大家用的少啊司抱!

于是按照上面的配置高興的部到項目里筐眷,跑一下,木有啥問題习柠,就是第一遍編譯速度出奇的慢匀谣,不過第二遍那速度杠杠的照棋。但在后續(xù)的部署過程中遇到到了一系列問題。

磁盤讀寫慢

在部署到CI機器(是一臺Mini 武翎,很老的機械硬盤)之后發(fā)現(xiàn)原本20min左右就跑完了烈炭,現(xiàn)在突然增到45min以上,不合理啊至少不能超過20min 吧宝恶。

帶著這個問題符隙,我觀察了CI機上一次run的過程,發(fā)現(xiàn)一個問題垫毙,CPU 的使用率大部分時間都是維持在10%左右霹疫,只有一小部分是60%~80%,不對啊综芥,我的本本在built 的過程中CPU 的使用率基本都是90%丽蝎,為啥CPU 大部分時間都是在閑著呢?后面我看了下磁盤的IO讀寫膀藐,發(fā)現(xiàn)是滿載荷屠阻,后續(xù)又觀察了幾次都是這個樣子,我測了下磁盤讀寫速度:

time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync"

額额各,僅僅只有 40MB/s国觉,我的 15寸MacPro 600MB/s,好吧臊泰,不是一個量級的蛉加。后續(xù) CI 機上就移除了 ccache ,僅在打包機(垃圾桶)上部署缸逃。

模塊間的解耦

在使用ccache 的過程中针饥,拉取同事的代碼后,經(jīng)常會出現(xiàn) Build 時間過長的現(xiàn)象需频,用命令 ccache -s 查看后發(fā)現(xiàn) cache 命中率下降丁眼。于是我分析了 ccache 的log,著重那些 miss 的類昭殉,發(fā)現(xiàn)其引用了相當多的模塊苞七,還有各種交叉的,引用很亂挪丢,組里的同學一改動就會波及到很多類蹂风,而對于那些引用很少的,命中率很高乾蓬。所以模塊間的耦合對 ccache 影響很大惠啄。后續(xù)組里同學們一起進行了模塊的解耦,效果是很顯著的。

PCH

PCH 這個東東簡直就是 ccache 的克星撵渡,所以盡量克制融柬,能不用則不用。我司的項目已經(jīng)移除了 PCH趋距。

ccache 配置

CCACHE_CPP2 這個設(shè)置我關(guān)閉粒氧,感覺這個設(shè)置很浪費時間
CCACHE_HARDLINK 這個設(shè)置也關(guān)閉,沒必要使用壓縮的緩存

其它的配置基本都是和大家搜的博客里一樣了

策略

雖然進行了以上幾個步驟节腐,但 模塊間的解耦 不是立即能夠完成的外盯,需要漫長的過程,有時候 ccache 仍然會大面積 miss 為了防止這樣的情況出現(xiàn)铜跑,我們應該做 一個策略门怪,當使用 ccache 超過某一個時間比如 10min,還沒有完成打包或者編譯 就自動禁掉 ccahce 锅纺,經(jīng)過長時間的測試發(fā)現(xiàn)這個策略很好使掷空,沒有一次超過 30min 的。

總結(jié)

使用 ccache 并不一定就能使你的 Xcode 立即就飛起來囤锉,很可能會摔的更死坦弟,所以項目優(yōu)化是必須的,同時硬件配置也要提升官地,磁盤的IO讀寫越快越好酿傍。

參考:
ccache 讓你的編譯時間飛起來

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驱入,隨后出現(xiàn)的幾起案子赤炒,更是在濱河造成了極大的恐慌,老刑警劉巖亏较,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莺褒,死亡現(xiàn)場離奇詭異,居然都是意外死亡雪情,警方通過查閱死者的電腦和手機遵岩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巡通,“玉大人尘执,你說我怎么就攤上這事⊙缌梗” “怎么了誊锭?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弥锄。 經(jīng)常有香客問我炉旷,道長签孔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任窘行,我火速辦了婚禮,結(jié)果婚禮上图仓,老公的妹妹穿的比我還像新娘罐盔。我一直安慰自己,他們只是感情好救崔,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布惶看。 她就那樣靜靜地躺著,像睡著了一般六孵。 火紅的嫁衣襯著肌膚如雪纬黎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天劫窒,我揣著相機與錄音本今,去河邊找鬼。 笑死主巍,一個胖子當著我的面吹牛冠息,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孕索,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼逛艰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搞旭?” 一聲冷哼從身側(cè)響起散怖,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肄渗,沒想到半個月后镇眷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡恳啥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年偏灿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钝的。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡翁垂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硝桩,到底是詐尸還是另有隱情沿猜,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布碗脊,位于F島的核電站啼肩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祈坠,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一害碾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赦拘,春花似錦慌随、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹋艺,卻和暖如春剃袍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捎谨。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工民效, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侍芝。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓研铆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親州叠。 傳聞我的和親對象是個殘疾皇子棵红,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

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