2017-03-28 27 views
6

我有三个项目的iOS:与斯威夫特极长的编译时间在Xcode

  • 第一个 - 35K斯威夫特LOC,雨燕2.1(?或2.0),使用的Xcode 7.2.3
  • 第二个编译 - 15K夫特LOC,SWIFT 2.3,使用的Xcode 8.2.1
  • 三一个编译 - 15K夫特LOC,夫特3.0,编译使用的Xcode 8.2.1

的编译时间为所有这些都是深不可测(10+分钟为一个干净的版本)和发展吨每个这些正在放缓抓取。

我已经尝试:

  • 使用Whole Module Optimization
  • 更改C Dialect到编译器的默认
  • 分析建立了项目时间和优化的瓶颈(即把6-10s与阵列编译几个方法串联,零合并运营商等),其中剃了15秒 - 完全不明显的差异
  • HEADERMAP_USES_VFS = YES
  • 其他一些我不记得现在

我工作在Mac mini上晚2014年的固态硬盘,8GB RAM & 2.6GHz的酷睿i5,如果该事项。

任何人都知道什么可能会导致这种情况,该怎么做,甚至现在有什么解决方法?从我在SO和其他地方阅读的内容看来,这似乎是一个未解决的编译器问题。

编辑:是的,我使用Cocoapods的依赖。我会尝试转移到迦太基,看看会发生什么。

+0

您使用的是椰子树吗? – user3581248

+1

你见过这个:https://thatthinginswift.com/debug-long-compile-times-swift/? – vikingosegundo

+0

是的,我正在使用椰子树,是的,我看过那篇文章。它与类型推断问题没有关联。我已经整理出了代码瓶颈。 –

回答

5

尝试在生成设置中设置以下内容作为解决方法。我假设你只有一个目标。

  1. 将Build Active Architecture仅设置为Yes。
  2. 将优化等级为无[-Onone]
  3. 添加一个名为“SWIFT_WHOLE_MODULE_OPTIMIZATION”,其值为“YES”
  4. 清空你得到的数据,并建立用户定义的设置。

然后你也可以使用这个工具来分析任何慢编译斯威夫特文件:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

我正经历着构建服用6-7分钟时间。我离开了Cocoapods,并开始使用Carthage来帮助干净的构建。即使这样,构建仍然需要3分钟。最大的改进来自上面提到的步骤。

更新

,而不是添加用户定义的设置,在你的调试版本设置的优化级别,以“快,整个模块优化”的。然后在您的调试版本的其他Swift Flags中添加'-Onone'。

+0

我尝试了上述步骤,但我还没有试过移动到迦太基,但可能有所帮助。谢谢! –

+1

这些步骤是否无助于提高编译时间?根据我的经验,Swift的编译时间最大。不要使用您提到的“整体模块优化”,而是按照我所描述的方式进行操作。 – totiG

+0

我还没有尝试过从用户定义的设置中设置'SWIFT_WHOLE_MODULE_OPTIMIZATION',就像代码优化设置一样。我也会尝试。 –