转载

探索Xcode8编译为什么那么慢?

背景

随着 Xcode8swift3.0 的正式到来,我开始着手将 swift2.3 的项目转到 swift3 (至于转换过程,这里不多做介绍,Xcode自带的转换工具,基本可以转换80%左右,剩下的自己慢慢调试即可。)但是,转到swift3只会,在用Xcode8编译,发现编译过程变得非常慢,哪怕打一个空格,都要重新编译很久。于是在网上查找解决办法,查找了半天各种方法全用,发现于事无补。

有什么加一个 HEADERMAP_USES_VFS = YES () 这是地址,反正这个对我没用,感兴趣的话自己试试

针对这种情况,我就自己探索,出发点是排查哪些文件,哪些方法导致编译变慢?

探索Xcode编译,在哪些地方可以看到编译文件过程

通过多次编译查看,发现在Xcode左边栏,最后一个选项,是每次的编译运行等记录, 每行记录中都会有每次编译的文件编译记录。如下图

探索Xcode8编译为什么那么慢?

再次查看正在编译的一条记录(正在编译的记录后面有一个转圈圈的”菊花“),发现有图中1、2两种标识, 一个绿色:white_check_mark:说明,这是编译完成了,另一个是灰色→箭头,说明是正在编译;此时发现灰色一直停留在这里,指向图中的文件,左边的菊花一直转个不停, 编译卡住了。这样一来就找到编译是什么文件导致的那么慢。

探索Xcode8编译为什么那么慢?

排查文件中哪些代码导致的编译卡住?

排查的方法,采用比较笨的方法,暴力注释方法: 就是注释找到卡住的文件中的所有方法里的代码,不要注释方法,再次编译,此时发现该文件很快通过编译,然后在依次解开部分方法注释,再次编译,直到发现解开某个方法的注释后,编译再次卡住,那就说明那个方法中的代码写的有问题,然后在依次注释,解开注释,排查方法中的某一行代码的问题。 经过一番排查,我找到了我代码中卡住的部分代码,如下图红色圈中的代码

探索Xcode8编译为什么那么慢?

在字典中的key对应的value,没有给直接的值,而是给出一个表达式,这样会导致Xcode8的编译速度极其慢,不知道为什么会出现这样的问题,之前的Xcode版本是没有的。

找到问题所在,解决问题就简单了,于是修改代码如下图:

探索Xcode8编译为什么那么慢?

修改之后,再次编译,重新回到了快速编译的时代了,再也不用等上5-10分钟不等了。

以上过程,是针对我遇到的问题而言的,不知道是否存在普遍性,如若你也遇到,刚好看了我的文章,也解决了问题,那就会心一笑吧,如若你也遇到了,但是没有解决问题,也请你会心一笑吧。

这是苹果开发者提到的Xcode8编译超慢的问题,我看了下,也做了对应修改,发现对我并没有什么用, 感兴趣的话进去看看吧

有时候自己慢慢去探索出问题的所在,也是很不错的体验。

原文  http://www.devashen.com/blog/2016/12/21/xcode8build/
正文到此结束
Loading...