iOS Swift工程优化编译速度

Other Swift Flags

在build setting的Other Swift Flags中添加以下flag,就可在building log中看到详细的编译时长:
-Xfrontend -debug-time-compilation:输出文件的编译时长
-Xfrontend -debug-time-function-bodies:输出function编译时长
-Xfrontend -debug-time-expression-type-checking:输出function内每一行代码的编译时长
-Xfrontend -warn-long-function-bodies=100:编译时间超过100ms的function报警告
-Xfrontend -warn-long-expression-type-checking=100:编译时间超过100ms的代码报警告

日志通常都有数十万行,可阅读性极差。GitHub上有个工具能够方便的统计展现这些日志信息,连接以下: github.com/fastred/Opt…

使用flag和对应的工具能够定位到具体编译时间特长的代码的位置,相应的进行修改就能解决代码层面的编码时间长的问题。git

build setting

  1. Optimization Level:优化等级,Debug设为None
  2. Debug Information Format:在Debug模式下移除dsym文件
  3. Build Active Architecture:Debug模式下设为YES,只编译当前的Architecture,能够加快编译速度 这三个是常见的优化编译速度的设置。

代码规范

  1. Dictionary和数组之类的容器对象须要变量声明类型。不声明类型的容器对象会致使编译时长增长一秒左右
  2. String和array等对象不要用”+“拼接串联,String用“+”拼接会大幅增长编译速度
  3. 在if等逻辑判断语句中不要进行“+-/”计算操做

    以上三点规范对编译时长影响比较大,建议严格遵照。
    能缩短编译时长的代码规范的有不少,可是大多都不具有可操做性。好比:复杂的“+-
    /”和频繁嵌套类型转换也会致使编译时间长,经过将长的计算式拆分为多个短计算式等方式能够缩减编译时间,可是没有什么实际的意义,因此能够不用在乎。

参考文档

参考文档比我写的详细,我只是将这些文档实践,而后总结一下有用的东西。
koke.me/2017/03/24/…
hackernoon.com/speed-up-sw…
github.com/fastred/Opt…
工具连接: github.com/RobertGumme…github

相关文章
相关标签/搜索