怎样测量编译时间消耗
在最新版本的 Xcode 中,编译后查看 Report Navigator 面板,点击刚刚的那次编译,即可查看到整个编译流程,以及每一步的耗时。右键点击任意一个步骤,选择 Show In Timeline 可打开一个时间线面板,在实现面板中,可以查看到编译的各个步骤,包括 Prepare Packages、Plan build、Create build description 等,可以通过每个条目的长度直观的看到编译时间的长短,也可以直观的看到哪些条目是可以并行编译的。可以找出那些比较长的,或者无法并行编译的条目,做进一步分析。或者是找出那些耗时过长的步骤,比如执行某个自定义脚本的时间过长。
也有写第三方工具例如 https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode 可以测量并分析编译时间。
还有个更好的方法,在 Build Settings 的 Other Swift Flags 添加 -Xfrontend -warn-long-function-bodies=100
可以让 Xcode 在任何耗时超过 100ms 的方法处报告警告,添加 -Xfrontend -warn-long-expression-type-checking=100
可以让 Xcode 在任何耗时超过 100ms 的表达式处报告警告。这个方法可以直接通过警告定位到具体的代码位置,非常得方便。
通过 Xcode 设置优化编译速度
合适的 Build Settings
这个配置可以让 Xcode 在 Debug 模式下仅生成目标设备所需要的架构,而不会生成所有的架构,从而在 Debug 模式下节省编译时间。
这个配置可以让 Xcode 在 Debug 模式下不生成 dSYM 文件从而节省 Debug 模式下的编译时间。