由于我的项目在过去一年中不断增长,其构建时间也在增长。在过去的几个月中,它从4分钟变为7分左右(时间包括GitHub拉动,单元测试等)。
我已调查-Xfrontend -debug-time-function-bodies
以查找编译速度慢的行,并更改了该代码。
我认为这是项目规模的问题; 182个Swift文件,≈31K行。 23个故事板,52个XIB。这是一个常规的UIKit应用程序,具有少数Cocoapods依赖项。
大部分构建时间花在“编译Swift源文件”阶段。
构建机器时间我关心的不是编辑 - 构建 - 调试周期,这也一直在减慢。
可以采取哪些措施来缩短构建时间?
答案 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
包括以下内容:
答案 4 :(得分:0)