減少編譯
- CCache,安裝配置即可歉嗓,對(duì)代碼無(wú)侵入丰介,成本低、風(fēng)險(xiǎn)低鉴分。優(yōu)化時(shí)需要想辦法提高cache命中率
- Lib庫(kù)哮幢,把一些穩(wěn)定的代碼打包成庫(kù),直接鏈接
- PCH(Percompiled Header)志珍,頭文件預(yù)編譯橙垢,要求頭文件變化不頻繁,且被大量include伦糯,對(duì)代碼有一定侵入柜某,使用cmake組織工程的話嗽元,可以降低成本
并行編譯
- make -j,不用多說(shuō)喂击,充分利用多核進(jìn)行編譯
- distcc剂癌,linux平臺(tái)利用網(wǎng)絡(luò)集群進(jìn)行編譯,需要考慮網(wǎng)絡(luò)時(shí)延與網(wǎng)絡(luò)穩(wěn)定性
減少I(mǎi)O
- Unity Source翰绊,主要減少頭文件打開(kāi)佩谷,展開(kāi)開(kāi)銷(xiāo),減少生成.o與鏈接打包開(kāi)銷(xiāo)监嗜。對(duì)于職責(zé)拆分比較細(xì)的大量小文件谐檀,優(yōu)化效果非常明顯。
- tmpfs秤茅,臨時(shí)文件系統(tǒng)稚补,是linux平臺(tái)下利用內(nèi)存替代硬盤(pán)減少去IO的一種技術(shù)童叠,跟硬件配置關(guān)系比較緊密
- 減少編譯腳本log輸出框喳,文件Copy等操作
頭文件設(shè)計(jì)
- 避免設(shè)計(jì)不合理的大頭文件,相對(duì)于包含更多小的頭文件厦坛,嵌套更深的頭文件五垮,包含內(nèi)容更多的大頭文件展開(kāi)、解析才是影響編譯速度的主要因素
- C++模板杜秸,模板在編譯時(shí)要進(jìn)行類(lèi)型推導(dǎo)放仗,會(huì)影響編譯速度與包大小,但相比于帶來(lái)的復(fù)用性撬碟、擴(kuò)展性及性能收益诞挨,編譯成本不大
- 刪除沒(méi)有必要的頭文件,減少預(yù)編譯是頭文件展開(kāi)時(shí)間
- 減少頭文件inline呢蛤,頭文件inline是提高運(yùn)行時(shí)性能的一種方法惶傻,但同時(shí)也會(huì)導(dǎo)致編譯速度,刪除非性能熱點(diǎn)的inline可以加快編譯速度
- 降低頭文件依賴(lài)其障,可以通過(guò)前置聲明等方式減少頭文件依賴(lài)银室,可以減少頭文件展開(kāi)時(shí)間,對(duì)增量編譯也有很大收益