iOSiOS一点通Mac和Xcode相关

如何提高XCode编译速度

2017-09-26  本文已影响0人  vincentgemini

写在前面

新到一个公司,拉下代码后,发现编译时间在10分钟以上,不知道为啥这么长时间,之前开发过程中没有遇到过这样的情况。于是准备研究一下为啥这么长时间,这样也太影响开发效率了。

在网上找了一些相关资料,大致介绍如下:

1. 增加XCode执行的线程数

可以根据自己Mac的性能,更改线程数:

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 5

另外想看看编译你的工程需要花费多久,可以开启一个设置:

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
Build Time.png

XCode默认使用与CPU核数相同的线程来进行编译,但由于编译过程中的IO操作往往比CPU运算要多,因此适当的提升线程数可以在一定程度上加快编译速度。

实验证明:此方法不是很明显。

2. 将Debug Information Format改为DWARF

Debug Information Format.png

在工程对应Target的Build Settings中,找到Debug Information Format这一项,将Debug时的DWARF with dSYM file改为DWARF。

这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后,如果程序崩溃,将无法输出崩溃位置对应的函数堆栈,但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大。

顺便提一下,如果通过Cocoapod引入第三方则Debug Information Format默认就是设置为DWARF的。

实验证明:此方法很明显。

3. 将Build Active Architecture Only改为Yes

Build Active Architecture Only.png

在工程对应Target的Build Settings中,找到Build Active Architecture Only这一项,将Debug时的NO改为Yes。

这一项设置的是是否仅编译当前架构的版本,如果为NO,会编译所有架构的版本。需要注意的是,此选项在Release模式下必须为NO,否则发布的ipa在部分设备上将不能运行。

实验证明:此方法很明显。

4. 设计编译优化等级

Optimization Level.png

不要再项目中或者静态库中使用-O4,因为这会让Clang链接Link Time Optimizations (LTO)使得编译更慢,通常使用-O3。

注意:在设置编译优化之后,XCode断点和调试信息会不正常,所以一般静态库或者其他Target这样设置。

总结:

以上是网络的一般做法,其实有些地方还是可以做更细的优化的,比如:

  1. 将常用的代码及文件打包成静态库;
  2. 添加预编译文件,把常用的头文件放到预编译文件里面;
  3. 能用@class就用@class,尽量减少文件引用关系;
  4. 减少资源的引用,以及xib文件的使用;
  5. 考虑使用不同的Configurations控制编译:
Configurations.png
  1. 考虑使用不同的Targets控制编译:
图片.png
  1. 构建自己的Pods文件;

以上仅是个人的一点心得,如果有更好的优化空间,还希望给我留言。

参考:Programering

上一篇下一篇

猜你喜欢

热点阅读