我喜欢 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_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
(无重大改进)
-
创建了一个 new project 并将所有文件移动到新文件(花费的时间太长并且时间很短)
-
将 compilator 从默认更改为其他可用(更糟)
-
严格 rules 关于如何编写快速编译的Swift代码(详见下文)
我想每个人都在等待新的 Xcode 8.2 beta 2
:
当只发生很小的变化时,Xcode不会重建整个目标 . (28892475)
但这只是部分正确,我仍然有很长的编译时间 - 从6-12分钟变为3-8分钟 . 有关详细说明,请访问here和here
此外,我在代码编写过程中遵循了所有这些规则:
-
链式函数减少
-
展开选项
-
对象的隐式类型(特别是字典)
-
避免??操作员(这个非常饿!!)
-
避免?:运营商
换句话说,不要使用任何“新的酷功能”,因为你会等待多年 .
再试一次 - 是一种解决方法here:
转到产品 - >计划 - >编辑方案 . 在左侧列中选择Build并取消选中“Find implicit dependencies”但是在第一次构建项目时应保持选中此标志 .
但是,这种解决方法不是我正在寻找的,这也可以作为临时解决方案 .
Swift
是一种痛苦,不是因为它很难使用(至少在某些机器上) .
为了比较:我有一个项目在 Objective-C
上有2k类,11个pods - 干净的编译时间是~30秒 .
我还发现了很多关于快速性能的漏洞:
我的问题是:
4 回答
对我来说这个问题也是 extremely frustrating . 我们已经提到了,但没有一个有效 .
在编译时间方面取得显着改进的一件事是:在
Other Swift Flags
中添加-Onone
时启用Whole Module Optimization
.看到这个 - Speed Up Swift Compilation
我正在使用
Swift 3
与Xcode 8.3
.您可能已经开启了代码优化,而这是构建发布版本的必要条件,对于开发版本来说,这并不是特别重要 .
代码优化所做的正是它所说的,它优化了代码,使得生成的二进制二进制文件更小 . 它做的事情,如将变量/方法重命名为单个字符等...就像我说你提交到应用程序商店时显然想要这个,但你可能不在乎应用程序是否在开发时更大 .
您可以通过转到项目设置>构建设置,在Swift编译器下搜索'optim',将代码生成集优化级别设置为无[-Onone]进行调试构建,从而关闭开发构建的代码优化 .
这应该会显着缩短您的构建时间 .
我们通过使用Carthage而不是Cocoapods来包括第三方库,大大改善了编译时间 .
WHOLE MODULE OPTIMIZATION WITH NO DEBUGGING RESTRICTIONS
只需将 SWIFT_WHOLE_MODULE_OPTIMIZATION 添加为 user-defined 设置,其值为 YES ,编译时间应该会有很大改善 .
这个修复程序是由Zalando的开发人员引入的 . 向他们大喊大叫 . https://jobs.zalando.com/tech/blog/improving-swift-compilation-times-from-12-to-2-minutes/?gh_src=4n3gxh1