xcbuild可用性分析报告

2018-09-13 14:20:41 浏览数 (1)

xcbuild可用性分析报告

项目简介

xcbuild是Facebook 出品的开源 App 构建工具,一款能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 的构建工具。

官方对其特性介绍如下:

  • 超快的增量构建和构建频率;
  • 支持构建Xcode项目和workspace;
  • 支持Swift应用与框架;
  • 使用Ninja和llbuild;
  • 完全兼容xcpretty;
  • 基于BSD开源许可;
  • 基于Linux平台构建。

官方给出的性能比较:

perfermance

XCBuild安装配置步骤:(MacOS下)

  1. 安装homeBrew:http://brew.sh/,直接按照官网步骤去终端里运行即可。
  2. 安装CMake和Ninja:
代码语言:javascript复制
brew install cmake ninja
  1. 从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]进行编译即可。

实验

为了测试xcbuild是否真的有fb说的那么神,特用动态资源下载的framework来做实验。

  • 样本对象:动态资源下载 RMResourceManager
  • 对照组:xcodebuild和xcbuild
  • 测试方法:在同一条件下分别build RMResourceManager,用time打印命令执行时间。需要注意的是,每次build完需要删除路径上build出来的framework和clean项目,以免造成其它结果的干扰
  • time中会打印三种时间,分别为real,user,sys。本文以real为准。

结果

平台

完全build耗费时间

增量build耗费时间

xcodebuild

3.125s

1.056s

xcbuild

4.974s

4.814s

xcbuild ninja

3.696s

0.329s

结果分析

  • xcbuild一定要和ninja一起用,不然相比xcodebuild没有优势;
  • 完全build(即clean build)下,xcbuild ninja并没有太大优势;但是增量更新上,xcbuild ninja可以说是压倒式的胜利。
  • fb在宣传上确实没有放水,在增量性能上性能很高。
  • 但是鉴于技术过于新,稳定性不能保证,所以建议先保持关注
附录

测试时使用的命令:

  • xcodebuild:
代码语言:javascript复制
time xcodebuild -workspace RMResourceManager.xcworkspace -scheme RMResourceManager
  • xcbuild:
代码语言:javascript复制
time ./xcbuild/build/xcbuild -workspace /Users/mengdao/Desktop/RMResourceManager_9.6_160229/RMResourceManager.xcworkspace -scheme RMResourceManager
  • xcbuild ninja:
代码语言:javascript复制
time ./build/xcbuild -executor ninja -workspace /Users/mengdao/Desktop/RMResourceManager_9.6_160229/RMResourceManager.xcworkspace -scheme RMResourceManager

0 人点赞