xcbuild可用性分析報(bào)告
項(xiàng)目簡介
xcbuild
是Facebook 出品的開源 App 構(gòu)建工具降宅,一款能夠?yàn)?App 構(gòu)建過程與多平臺運(yùn)行提供更快構(gòu)建、更好文檔并兼容 Xcode 的構(gòu)建工具淀衣。
官方對其特性介紹如下:
- 超快的增量構(gòu)建和構(gòu)建頻率篱昔;
- 支持構(gòu)建Xcode項(xiàng)目和workspace瑞妇;
- 支持Swift應(yīng)用與框架;
- 使用Ninja和llbuild秉沼;
- 完全兼容xcpretty桶雀;
- 基于BSD開源許可;
- 基于Linux平臺構(gòu)建唬复。
官方給出的性能比較:
![perfermance](https://os.alipayobjects.com/rmsportal/unectcPvqzTulZV.png)
perfermance
XCBuild安裝配置步驟:(MacOS下)
- 安裝homeBrew:http://brew.sh/矗积,直接按照官網(wǎng)步驟去終端里運(yùn)行即可。
- 安裝CMake和Ninja:
brew install cmake ninja
- 從git上check xcbuild工程:
git clone https://github.com/facebook/xcbuild
cd xcbuild
git submodule update --init
make```
XCBuild使用方法
在xcbuild目錄下輸入 ./build/xcbuild -workspace [workspaceName] -scheme [schemeName]
進(jìn)行編譯即可敞咧。
實(shí)驗(yàn)
為了測試xcbuild是否真的有fb說的那么神棘捣,特用動態(tài)資源下載的framework來做實(shí)驗(yàn)。
- 樣本對象:動態(tài)資源下載 RMResourceManager
- 對照組:xcodebuild和xcbuild
- 測試方法:在同一條件下分別build RMResourceManager休建,用time打印命令執(zhí)行時間乍恐。需要注意的是,每次build完需要刪除路徑上build出來的framework和clean項(xiàng)目测砂,以免造成其它結(jié)果的干擾
- time中會打印三種時間茵烈,分別為real,user,sys。本文以real為準(zhǔn)砌些。
結(jié)果
平臺 | 完全build耗費(fèi)時間 | 增量build耗費(fèi)時間 |
---|---|---|
xcodebuild | 3.125s | 1.056s |
xcbuild | 4.974s | 4.814s |
xcbuild+ninja | 3.696s | 0.329s |
結(jié)果分析
- xcbuild一定要和ninja一起用呜投,不然相比xcodebuild沒有優(yōu)勢;
- 完全build(即clean build)下,xcbuild+ninja并沒有太大優(yōu)勢仑荐;但是增量更新上雕拼,xcbuild+ninja可以說是壓倒式的勝利。
- fb在宣傳上確實(shí)沒有放水释漆,在增量性能上性能很高。
- 但是鑒于技術(shù)過于新篮迎,穩(wěn)定性不能保證男图,所以建議先保持關(guān)注。
附錄
測試時使用的命令:
- xcodebuild:
time xcodebuild -workspace RMResourceManager.xcworkspace -scheme RMResourceManager
- xcbuild:
time ./xcbuild/build/xcbuild -workspace /Users/mengdao/Desktop/RMResourceManager_9.6_160229/RMResourceManager.xcworkspace -scheme RMResourceManager
- xcbuild+ninja:
time ./build/xcbuild -executor ninja -workspace /Users/mengdao/Desktop/RMResourceManager_9.6_160229/RMResourceManager.xcworkspace -scheme RMResourceManager