最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【部分解决】Xcode的CPU占用率长期超过100%+建立索引和编译极其慢

Xcode crifan 9534浏览 0评论

之前用Xcode貌似正常。最近出问题了:打开Xcode的项目后,Xcode时不时的在建立索引,然后CPU占用率极高。或者是,编译build的时候,CPU占用率也是非常高。基本上都是100%多:

同时,伴随着问题:

Xcode无法调转到代码定义

Command+鼠标点击函数,结果

显示蓝色下划线,但是无法跳转到代码定义

而有时候,代码被正常解析后,是可以正常跳转代码的。

好像问题可以说是:

Xcode中,代码indexing,建立索引,失败,或者说是时间很长,经常无法正常建立索引,代码无法正常高亮显示

xcode cpu over 100

貌似是建立索引的问题 indexing太慢

Xcode 8.3.3 indexing too slow

ios – XCode 8.0 Swift 3.0 slow indexing and building – Stack Overflow

去加上:

Editor > Add Build Setting > Add User-Defined Setting

刚刚遇到个问题,发现Add User-Defined Setting是灰色的

现在突然又好了:

然后输入:

SWIFT_WHOLE_MODULE_OPTIMIZATION 和 YES

然后去看看效果。

先去再次完全clean一下:

再去等一会,等Xcode去indexing,看看是否能很快建立索引,代码高亮

好像真的是:

之前估计要N多分钟的indexing,现在很快就可以了。

然后代码跳转也正常了:

Xcode 8 Editing very slow | Apple Developer Forums

ios – Xcode 8.3 Indexing & Building Extremely Slow – Stack Overflow

说是:

Xcode 9中解决了该问题,但是会使用swift 4

如果不想要用swift 4,xcode 9中也是可以继续用swift 3的。

然后xcode 9中包含了一个新的编译系统,(速度更快?)

需要手动给当前项目设置一下,才能启用。

【总结】

总之就是Xcode 8.3.3 + swift 3,有bug,导致建立代码的索引indexing极其的慢,Xcode占用CPU长期保持超过100%,由于一直没建好索引,所以代码高亮也就不工作,代码都是白色的,不能正常代码高亮

解决办法:

去:

Editor > Add Build Setting > Add User-Defined Setting

添加:

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES

即可:

大幅度降低,还原到正常的,Xcode建立索引的时间很短,CPU占用率也不是很高,代码高亮很快就起效果了。

【后记】

但是,貌似还是不够理想,至少是:

1.indexing还是有时候会慢,然后代码高亮和跳转还是不够及时

2.build的速度还会导致CPU占用率极高

ios – Extremely long compilation times with Swift in Xcode – Stack Overflow

去看了看,此处已经是:

了:

Optimization Level = ‘Fast, Whole Module Optimization’

还是去安装:

RobertGummesson/BuildTimeAnalyzer-for-Xcode: Build Time Analyzer for Swift

看看效果:

结果出错:

【已解决】Xcode出错:Swift Language Version SWIFT_VERSION is required to be configured correctly for targets which use Swift

-》但是:

算了,放弃这个插件。即使花时间改掉这些错误,估计也未必能用,因为作者说了只是针对于Xcode 7的插件的。

然后再去看看:

“Empty your derived data and build.”

去搜:

Xcode project Empty your derived data 

xcode8 – How to delete derived data in Xcode 8? – Stack Overflow

然后删除掉项目对应文件夹:

SRT-cfccwgbddwbjoqbfrtcfvclnuykq

即可。

然后再去看看build和indexing速度如何。

还是不行。

Xcode 8 build index slow

Xcode8 build index slow

ios – XCode 8 very slow swift compiling – Stack Overflow

结果此处的Swift Compiler – Custom Flags,里没法add:

后来才注意到:

要把Basic改为All,才能看到:Other Swift Flags

然后clean后再去重新build

看到了一堆警告:

但是无助于此处彻底解决Xcode编译慢,耗CPU资源多的问题。

swift – Xcode 8 does full project rebuild – Stack Overflow

去试试:

HEADERMAP_USES_VFS = YES

然后看看效果

Xcode8   index slow

现在也发现了,切换文件时,就会导致Xcode去全局编译,而不是增量编译

然后CPU占用率奇高

Xcode8  index too slow

ios – XCode 8 keeps freezing at startup when loading index – Stack Overflow

xcode swift indexing forever – Stack Overflow

Xcode8  build too slow

xcode – Swift 3 Compile Time Incredibly Slow – Stack Overflow

然后实在无语了,还是无法彻底解决。

然后去试试:

【部分解决】Xcode的CPU占用率长期超过100%+建立索引和编译极其慢

【总结】

最终通过下载和安装Xcode9

(并且伴随着解决了一系列的Carthage引用的第三方库的重新更新和编译,然后项目才能正常引用第三方库)

项目的索引indexing和build编译,就正常了,很快。

解决了之前的:index和build都极其慢的,CPU和资源占用率都极高。

【后记】

后来发现:

【部分解决】Xcode的CPU占用率长期超过100%+建立索引和编译极其慢

也没有彻底解决问题。

所以去:

把之前添加到参数,从Xcode9中去掉:

【已解决】Xcode9中删除Build Settings的User-Defined中的参数设置

删除了:

SWIFT_WHOLE_MODULE_OPTIMIZATION

再去删除:

Other Swift Flags中的-Xfrontend -warn-long-function-bodies=200

再去删除:

HEADERMAP_USES_VFS = YES

然后结果:

貌似建立索引很流畅,CPU都没怎么占用,就建立好了??

重启Xcode再去试试

结果离开开始Indexing

CPU占用了200%多

后来更狠,接近300%

 

总之,感觉和Xcode8之前一样的慢和占用资源多。

xcode 9 full project rebuild

问题还是无法解决。

算了,还是加上:

(1)Editor > Add Build Setting > Add User-Defined Setting

<code>SWIFT_WHOLE_MODULE_OPTIMIZATION=YES
</code>

(2)

<code>HEADERMAP_USES_VFS = YES
</code>

(3)Other Swift Flags中的

<code>-Xfrontend -warn-long-function-bodies=500
</code>

这样至少能部分缓解当前的问题。

转载请注明:在路上 » 【部分解决】Xcode的CPU占用率长期超过100%+建立索引和编译极其慢

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.168 seconds, using 22.18MB memory