加快Xcode Swift构建时间

时间:2016-11-03 16:12:57

标签: swift xcode compiler-optimization compile-time

由于我的项目在过去一年中不断增长,其构建时间也在增长。在过去的几个月中,它从4分钟变为7分左右(时间包括GitHub拉动,单元测试等)。

我已调查-Xfrontend -debug-time-function-bodies以查找编译速度慢的行,并更改了该代码。

我认为这是项目规模的问题; 182个Swift文件,≈31K行。 23个故事板,52个XIB。这是一个常规的UIKit应用程序,具有少数Cocoapods依赖项。

大部分构建时间花在“编译Swift源文件”阶段。

构建机器时间我关心的不是编辑 - 构建 - 调试周期,这也一直在减慢。

可以采取哪些措施来缩短构建时间?

5 个答案:

答案 0 :(得分:3)

这是一篇关于基准测试/加快编译时间的文章 - swift-profiling

如果它死了,那么是tldr:

xcodebuild -workspace App.xcworkspace -scheme App clean build OTHER_SWIFT_FLAGS="-Xfrontend -debug-time-function-bodies" | grep .[0-9]ms | grep -v ^0.[0-9]ms | sort -nr > culprits.txt

你可以运行它,或者在构建设置中的other-swift-flags下为你的构建添加以下标志:

-Xfrontend -warn-long-function-bodies=100

这将显示哪些行减慢了编译时间。

答案 1 :(得分:3)

Xcode 8.1 / Swift 3.1为项目增加了一些缓解,包括一些ObjC。预编译的头文件又回来了! https://swift.org/blog/bridging-pch/

如果您的项目包含桥接标题,这将有所帮助。 (在Xcode 8.1 beta 4及更高版本中,这是默认设置;在先前的测试版中,将-enable-bridging-pch添加到Other Swift Flags)。

答案 2 :(得分:3)

打开 Whole Module Optimization ,同时在 -Onone 中添加 Other Swift Flags 为我工作,编译时间从10减少到3分钟 在此处阅读更多内容 - Speed Up Swift Compilation

我在Swift 3 上使用 Xcode 8.3

答案 3 :(得分:1)

查看这篇精彩帖子: https://github.com/fastred/Optimizing-Swift-Build-Times

包括以下内容:

  • 检查函数和表达式的类型
  • 慢慢编译文件
  • 仅构建活动架构
  • dSYM generation
  • 整个模块优化
  • 第三方依赖
  • 模块化
  • XIBs
  • Xcode Schemes
  • 使用新的Xcode构建系统
  • 启用并发Swift构建任务
  • 在Xcode中显示构建时间

答案 4 :(得分:0)

自Xcode 9.3 以来,Compilation Mode名为Single File。它明确表示在谈论Xcode发行说明中的​​编译时间时它可以改变游戏

  

按文件或模块编译Swift代码的选择   编译模式的优化级别设置,这是一个新的   在“构建设置”窗格中设置Swift编译器   项目编辑。以前这个选择与其他人合并   优化级别设置。按文件编译仅支持构建   更改的文件,实现更快的构建。按模块编译   实现更好的优化。

它真的是一个救生员。我的企业项目的增量编译时间减少到几秒钟。你可以尝试一下。

enter image description here