首页 文章

Swift编译时间非常长

提问于
浏览
18

我喜欢 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个 beans 荚

Compile time: 3分钟

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

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

  • 设置 HEADERMAP_USES_VFSYES (无变化)

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

  • 创建了一个 new project 并将所有文件移动到新文件(花费的时间太长并且时间很短)

  • compilator 从默认更改为其他可用(更糟)

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

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

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

当只发生很小的变化时,Xcode不会重建整个目标 . (28892475)

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

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

  • 链式函数减少

  • 展开选项

  • 对象的隐式类型(特别是字典)

  • 避免??操作员(这个非常饿!!)

  • 避免?:运营商

换句话说,不要使用任何“新的酷功能”,因为你会等待多年 .

再试一次 - 是一种解决方法here

转到产品 - >计划 - >编辑方案 . 在左侧列中选择Build并取消选中“Find implicit dependencies”但是在第一次构建项目时应保持选中此标志 .

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

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

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

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

我的问题是:

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

4 回答

  • 2

    对我来说这个问题也是 extremely frustrating . 我们已经提到了,但没有一个有效 .

    在编译时间方面取得显着改进的一件事是:在 Other Swift Flags 中添加 -Onone 时启用 Whole Module Optimization .
    看到这个 - Speed Up Swift Compilation

    我正在使用 Swift 3Xcode 8.3 .

  • 1

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

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

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

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

  • 2

    我们通过使用Carthage而不是Cocoapods来包括第三方库,大大改善了编译时间 .

  • 7

    WHOLE MODULE OPTIMIZATION WITH NO DEBUGGING RESTRICTIONS

    只需将 SWIFT_WHOLE_MODULE_OPTIMIZATION 添加为 user-defined 设置,其值为 YES ,编译时间应该会有很大改善 .

    enter image description here

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

相关问题