首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极大地延长了快速编译时间

极大地延长了快速编译时间
EN

Stack Overflow用户
提问于 2017-01-11 07:43:26
回答 3查看 3.8K关注 0票数 19

我喜欢Apple和他们所做的事情,但是Swift. OH!

我在Swift编译时遇到了问题。

配置:

  • MacBook Pro (Retina,13英寸,2014年中部)
  • 2,6 GHz英特尔核心i5
  • 8 GB 1600 MHz DDR3
  • SSD 256 (高达800 MB/s)
  • 1k类
  • 10个豆荚

编译时间:3 min。

看起来“新的最佳和惊人的敏捷,梦想”这个配置是不够的,它的工作方式类似于Google Chrome - InfiniteLoop(find free memory - eat)

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

  • HEADERMAP_USES_VFS设置为YES (无更改)

  • Build Settings / Architectures / Build Active Architecture Only设置为YES (一些改进)

  • 设置defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4 (8) (有时会变得更糟)
  • 将优化级别设置为-Onone (没有重大改进)

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

  • 从您的计划中禁用Find implicit dependencies (没有重大改进)

  • 创建了一个新项目,并将所有文件移动到新的项目(耗时太长,并提供了较小的时间改进)
  • 编译器从默认更改为其他可用的(更糟)
  • 关于如何编写快速编译的Swift代码的严格规则(更多细节)

我发现了一些人们描述同样问题的帖子:这里这里

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

当只发生小的更改时,Xcode将不会重建整个目标。(28892475)

但这只是部分正确,我还有很长的编译时间--从6-12分钟移到3-8分钟。对此的详细描述可以找到这里这里

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

  • 链式函数约简
  • 展开选项
  • 对象的隐式类型(特别是字典)
  • 逃避??接线员(这位非常饿!)
  • 回避?:接线员

换句话说,不要使用任何“新的酷功能”,因为你会等待很长时间。

再一次尝试--是一个描述这里的解决方案。

转到产品->方案->编辑方案。选择“左侧生成”列并取消选中“查找隐式依赖项”,但在首次构建项目时,应始终选中此标志。

但是,这个解决方案不是我想要的,这也可以作为一个临时的解决方案。

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

比较而言:我在Objective-C上有一个带有2k类的项目,11个pods -干净的编译时间是30秒。

此外,我还在快速性能上发现了许多已打开的bug:

我的问题是:

有谁有改进Swift编译时间的解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2017-04-27 14:20:54

通过使用Carthage而不是Cocoapods来包含第三方库,我们大大提高了编译时间。

票数 3
EN

Stack Overflow用户

发布于 2017-01-11 07:50:30

您很可能打开了代码优化,虽然这是构建发布版本所必需的,但对于dev构建来说,它并不特别重要。

代码优化所做的正是它所说的,它优化了您的代码,使生成的最终二进制文件更小。它可以将变量/方法重命名为单个字符等.就像我说的,你在向应用程序商店提交时显然想要这样做,但是你可能不关心应用程序在开发时是否更大。

您可以通过转到Project > builds,搜索'optim',在Swift编译器-代码生成集优化级别下关闭用于Debug构建的代码优化级别为None -Onone,从而关闭用于开发构建的代码优化。

这将大大改善您的构建时间。

票数 2
EN

Stack Overflow用户

发布于 2017-11-24 08:18:43

没有调试限制的全模块优化

只需将SWIFT_WHOLE_MODULE_OPTIMIZATION添加为用户定义的设置,其值为、YES、,您的编译时间就会大大提高。

这种修复是由Zalando的开发人员提出的。对他们大喊大叫。src=4n3gxh1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41585270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档