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

时间:2017-03-28 10:23:07

标签: ios swift xcode

我有三个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
  • 我不记得的其他一些

我正在使用固态硬盘,8GB RAM& amp; 2.6ghz i5,如果重要的话。

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

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

2 个答案:

答案 0 :(得分:5)

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

  1. 仅将Build Active Architecture设置为是。
  2. 将优化级别设置为无[-Onone]
  3. 添加名为" SWIFT_WHOLE_MODULE_OPTIMIZATION"的用户定义设置值为"是"
  4. 清空派生数据并构建。
  5. 然后,您还可以使用此工具分析任何缓慢编译的Swift文件:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

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

    更新

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

答案 1 :(得分:1)

这是swift网站上的一个未解决的问题:https://bugs.swift.org/browse/SR-6037 希望他们能尽快解决。