Swift编译时间显着长

时间:2017-01-11 07:43:27

标签: ios swift xcode time compilation

我喜欢Apple及其所做的事情,但是Swift ... OH GOD!

我对`Swift`编译时有问题。

配置:

  • MacBook Pro(Retina,13英寸,2014年中)
  • 2,6 GHz Intel Core i5
  • 8 GB 1600 MHz DDR3
  • SSD 256(最高800 MB / s)
  • 1k课程
  • 10个豆荚

编译时间: 3分钟。

看起来像“新的最好和惊人的快速,梦想”这种配置是不够的,它就像Google Chrome - InfiniteLoop(find free memory - eat)


我尝试了各种方法来加快编译时间:

  • HEADERMAP_USES_VFS设为YES(无更改)

enter image description here

  • 设置Build Settings / Architectures / Build Active Architecture OnlyYES(一些改进)

enter image description here

  • 设置defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4(8) (有时情况会变得更糟)

  • 将优化级别设置为-Onone(无重大改进)

enter image description here

  • 设置调试信息格式 - DWARF而不是DWARF with dSYM File

enter image description here

  • 从您的计划中禁用Find implicit dependencies(无主要版本 改善)

enter image description here

  • 创建新项目并将所有文件移至新文件中(花费的时间过长,时间会有所改善)

  • 编辑器从默认更改为其他可用(更糟糕)

  • 关于如何编写快速编译的Swift代码的严格规则(详见下文)

我发现了一些人们描述相同问题的帖子:herehere

我想每个人都在等待新的Xcode 8.2 beta 2

  

只有很小的时候,Xcode不会重建整个目标   发生了变化。 (28892475)

但这只是部分正确,我仍然有很长的编译时间 - 从6-12分钟变为3-8分钟。有关详细说明,请访问herehere

此外,我在代码编写过程中遵循了所有这些规则:

  • 链式功能减少
  • 展开选项
  • 对象的隐式输入(特别是字典)
  • 避免??操作员(这个非常饿!!)
  • 避免?:运营商

或者说,不要使用任何“新酷炫功能”因为你会等待很长时间。

再试一次 - 是here所述的解决方法:

  

转到产品 - >方案 - >编辑方案。在左侧选择Build   列并取消选中“查找隐式依赖项”但此标志应该   在您第一次构建项目时保持检查状态。

但是,这种解决方法不是我正在寻找的,这也可以作为一种临时解决方案。

Swift是一种痛苦,不是因为它很难写,而是因为它很难使用(至少在某些机器上)。

为了比较:我在Objective-C上有一个项目,有2k个类,11个pod--干净的编译时间是~30秒。

此外,我发现了很多关于快速性能的漏洞:

我的问题是:

有没有人有任何改进Swift编译时间的解决方案?

4 个答案:

答案 0 :(得分:7)

此问题对我来说也是 令人沮丧。我们已经尝试过您提到过的几种解决方案,而且没有一种解决方案。

使编译时间显着改善的一件事是: 在Whole Module Optimization中添加-Onone时启用Other Swift Flags 见这 - Speed Up Swift Compilation

我将Swift 3Xcode 8.3一起使用。

答案 1 :(得分:2)

您可能已开启代码优化,而这是构建发布版本的必要条件,对于开发版本而言,这并不是特别重要。

代码优化的作用与它所说的完全相同,它优化了代码,使得生成的二进制二进制文件更小。它做的事情,比如将变量/方法重命名为单个字符等......就像我说你提交到应用程序商店时显然想要这样,但你可能不在乎应用程序是否在开发时更大。

您可以转到项目设置>关闭开发版本的代码优化。构建设置,搜索'optim',在Swift编译器下 - 代码生成将优化级别设置为无[-Onone]以进行调试构建。

这应该会显着缩短您的构建时间。

答案 2 :(得分:2)

我们通过使用Carthage代替Cocoapods来增加编译时间,以包含第三方库。

答案 3 :(得分:1)

没有调试限制的整个模块优化

只需将 SWIFT_WHOLE_MODULE_OPTIMIZATION 添加为用户定义的设置,其值为 YES ,您的编译时间应该会有很大改善。

enter image description here

此修复程序由Zalando的开发人员介绍。向他们大喊大叫。 https://jobs.zalando.com/tech/blog/improving-swift-compilation-times-from-12-to-2-minutes/?gh_src=4n3gxh1