【发布时间】:2018-03-24 04:11:01
【问题描述】:
我目前正在研究优化我的项目的编译时间。
虽然我知道有一个叫做whole module optimization(简称WMO)的东西,但是我害怕在Build Settings中查看它> 因为我还没有真正深入研究它。
据我了解:
WMO 应该会加快代码执行速度,但会稍微增加编译时间,因为它会将整个模块文件作为一个整体进行编译,而不是根据Swift official blog on whole module optimizations 分别并行编译每个文件。
所以建议将 Swift 优化级别设置如下:
- 对于Debug配置,设置为
None [-Onone] - 对于 Release 配置,设置为
Fast, Whole Module Optimization [-O -whole-module-optimization],因为对于偶尔的发布版本而言,最佳编译时间并不重要。
但是,在挖掘有关如何减少 Debug 配置的编译时间的提示时,我发现了这个 User Defined 设置:
-
SWIFT_WHOLE_MODULE_OPTIMIZATION = YES用于调试 -
SWIFT_WHOLE_MODULE_OPTIMIZATION = NO发布
这个设置将我的Debug编译时间减少了几乎一半。
由于我是 Swift 编译器和 用户定义 设置的新手,我试图在 SWIFT_WHOLE_MODULE_OPTIMIZATION 上找到官方文档,但令人困惑的是网上没有任何文档。
人们只是说它减少了编译时间但没有进一步解释,或者它们与上面提到的 Swift 优化级别冲突。
据我了解,此设置设置为 YES 应该会增加编译时间,因为它启用了 WMO。因此,我认为我把 WMO 弄错了。
问题:
Swift Optimization Level设置和SWIFT_WHOLE_MODULE_OPTIMIZATION有什么区别?为什么
SWIFT_WHOLE_MODULE_OPTIMIZATION会减少编译时间?
谢谢!
【问题讨论】:
-
这个thread 可能有用。我个人不喜欢在此设置上添加自定义内容。我刚刚对
compilation mode和optimization level(Xcode 10.1) 进行了更改
标签: swift optimization compilation