Xcode 编译耗时收集

简述

昨天读了《iOS 微信编译速度优化分享》,里面提到用开源的LLVM输出编译耗时。方法是添加 -ftime-trace 参数,然后输出数据,
该数据显示了LLVM/Clang在编译每个文件上花费的时间,具体到函数粒度。

简单流程就是更换Xcode的Clang,添加编译参数 -ftime-trace,然后command +B。在Xcode输出各源文件 .o 的目录下会生成同名的 .json 数据文件。这个json文件可以用chrome浏览器的chrome://tracing/或者https://www.speedscope.app/查看。

但是没有怎么做详细步骤,对于没接触过LLVM的人来说这就是门槛。
-ftime-trace 参数是在开源LLVM9.0开始支持的,它的描述在这里http://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html#new-compiler-flags

替换Clang

下面我详细记录一下操作步骤:

  1. 先下载编译好的llvm,下载网页:http://releases.llvm.org/download.html
    网页的Pre-Built Binaries下面有已经编译好的各个平台的llvm,我这里就放一个macOS平台的下载链接:http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz
  2. 解压后,在 Xcode 的 Build Settings 下的 User-Defined 添加键 CC,值就就是你刚解压的clang的位置 {解压路径}/bin/clang
    添加方式:Editor -> Add Build Setting -> Add Build User-Defined Setting
  3. 在 Build Settings 里搜索 OTHER_CFLAGS 添加参数 -ftime-trace
  4. 这个时候编译会报这个错误,Unknown argument: '-index-store-path',在Build Setting 中搜索index并将Enable Index-While-Building Functionality选项设置为NO

这个时候就可以编译了,如果当前工程依赖其他工程,比如Pods工程,如果编译出现一些链接错误的话,那就也把这些工程改为下载的clang编译,重复上面的2、3、4步。

top Created with Sketch.