处理缓慢的Swift构建时间

我们从2016年4月开始我们的项目,并决定将其作为纯粹的快速代码库。 随着项目的发展,越来越多的快速文件被添加,我们开始注意到构建时间约为2-3分钟。 几个月后,我们得知该项目将花费大约7分钟的时间来构建

到处搜寻,我们发现了一些有趣的链接。

使用适用于Xcode 7.3.1的出色的Xcode分析器插件,我们试图摆脱项目中的头号罪魁祸首,并合并了一些拉取请求,从而将构建时间减少了3–6秒。 但是这些PR并没有真正影响整个构建时间。 仍然花了7分钟才能完成。

我们希望当Apple发布swift 3时,在构建时间上也会有所改进。 尽管编译器有所改进,但在构建项目时我们并未真正注意到任何改进。

更糟的是,当Xcode 8.0发布时,它曾经进行了完全重新编译,而不是进行增量构建,因此更改任何文件中的简单常量都将触发整个项目的重建。 (此问题稍后在Xcode 8.2中修复)

由于进行了这些重建,团队中的开发人员感到沮丧。

再次谷歌搜索,我们想到了Stack Overflow上的这个宝藏。

解决方法以加快构建速度

事实证明,将此简单标志添加到我们的项目设置中,可将编译时间从7分钟减少到1分钟。

只需在“项目设置”中转到目标的“构建设置”,然后单击搜索栏左侧的+按钮即可。 选择添加用户定义的设置
并将此文本粘贴到文本字段中

SWIFT_WHOLE_MODULE_OPTIMIZATION 

并将相应的值设置为YES(对于调试版本)和“ NO(否)”。

启用“整体模块优化”后,Xcode会将所有swift文件编译为一个大文件,而不是单独编译每个文件。

通常,您会注意到据说可以对发布版本启用“整体模块优化”,这是因为如果编译器可以一次看到所有文件,则可以推断出优化并将其应用于您的代码库。

因此,请确保针对发行版配置将此设置为“否”,然后上传到appstore,以便获得swift编译器可以提供的编译时间优化。

作为附带说明,您可以参考此答案以了解在xcode中构建项目所花费的时间。

结论

容易忘记,Swift才2岁,许多贡献者仍在努力构建这种语言。
尽管构建时间一直是造成挫败感的很大原因,但是“整体模块优化”技巧为我们节省了很多麻烦,并允许我们继续编写越来越多的快速代码。

在Twitter上关注Practo Engineering进行定期更新。 如果您喜欢这篇文章,请给我们鼓掌。 这将帮助其他中级用户找到它。 我们也在寻找kickass开发人员。 如果您有兴趣,请访问这里。