Swift 编译时间极长

问题描述 投票:0回答:4

我喜欢

Apple
和他们所做的事情,但是
Swift
...天哪!

我对 `Swift` 编译时间有疑问。

配置:

  • MacBook Pro(视网膜显示屏,13 英寸,2014 年中)
  • 2,6 GHz 英特尔酷睿 i5
  • 8 GB 1600 MHz DDR3
  • SSD 256(高达 800 MB/秒)
  • 1k 类
  • 10 颗豆荚

编译时间:3分钟。

看起来像“新的最佳和惊人的迅速,梦想”这个配置还不够,它的工作原理就像

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 个 pod - 干净的编译时间约为 30 秒。

我还发现了很多关于快速性能的开放错误:

我的问题是:

有人有改善 Swift 编译时间的解决方案吗?

ios swift xcode compilation compilation-time
4个回答
7
投票

这个问题对我来说也是极其令人沮丧。我们已经尝试了您提到的几种解决方案,但没有一个有效。

编译时间显着改善的一件事是: 打开

Whole Module Optimization
,同时在
-Onone
中添加
Other Swift Flags

请参阅此 - 加快 Swift 编译速度

我将

Swift 3
Xcode 8.3
一起使用。


3
投票

我们使用 Carthage 而不是 Cocoapods 来包含第三方库,从而大大缩短了编译时间。


2
投票

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

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

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

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


1
投票

整个模块优化,无调试限制

只需添加 SWIFT_WHOLE_MODULE_OPTIMIZATION 作为值 YES用户定义 设置,您的编译时间应该会大大缩短。

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

© www.soinside.com 2019 - 2024. All rights reserved.