在Xcode中使用Swift的编译时间非常长

bar*_*j.n 7 xcode ios swift

我有三个iOS项目:

  • 第一个 - 使用Xcode 7.2.3编译的35k Swift LOC,Swift 2.1(或2.0?)
  • 第二个 - 使用Xcode 8.2.1编译的15k Swift LOC,Swift 2.3
  • 第三个 - 使用Xcode 8.2.1编译的15k Swift LOC,Swift 3.0

所有这些的编译时间都很糟糕(干净版本的编译时间超过10分钟),而且每个版本的开发都在慢慢爬行.

我已经尝试过了:

  • 运用 Whole Module Optimization
  • 更改C Dialect为编译器默认值
  • 分析项目的构建时间并优化瓶颈(一些用数组连接编译6-10s的方法,nil合并操作符等),削减了15秒 - 完全不明显的区别
  • HEADERMAP_USES_VFS = YES
  • 其他一些我现在不记得了

我正在开发一款带有SSD,8GB内存和2.6ghz i5的Mac mini 2014,如果这很重要的话.

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

编辑:是的,我正在使用Cocoapods作为依赖项.我会尝试搬到迦太基看看会发生什么.

tot*_*tiG 5

尝试在构建设置中设置以下内容作为变通方法.我假设你只有一个目标.

  1. 将Build Active Architecture Only设置为Yes.
  2. 将优化级别设置为无[-Onone]
  3. 添加名为"SWIFT_WHOLE_MODULE_OPTIMIZATION"的用户定义设置,值为"YES"
  4. 清空派生数据并构建.

然后,您还可以使用此工具分析任何缓慢编译的Swift文件:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

我正在经历需要6-7分钟的构建时间.我离开Cocoapods并开始使用Carthage,这有助于清洁构建.即使这样,构建仍然需要3分钟.最大的改进来自我上面提到的步骤.

更新

在Debug构建中,不是添加用户定义的设置,而是将优化级别设置为"快速,整个模块优化".然后在其他Swift Flags中为您的调试版本添加'-Onone'.