首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.c和.m文件的Xcode构建速度很慢

.c和.m文件的Xcode构建速度很慢
EN

Stack Overflow用户
提问于 2018-02-02 23:20:17
回答 1查看 240关注 0票数 0

在将OSX更新到High Sierra并将Xcode更新到9.2.0之后,大型项目的项目构建时间变得难以控制。构建时间从大约10分钟增加到大约120分钟。

在研究过程中,我注意到Xcode产生的xcexec子进程占用了大部分的cpu使用率。xcexec几乎所有的时间都在调用系统的close调用。每个xcexec进程每分钟调用大约200万次close调用。

在检查xcexec二进制文件时,这似乎是一个用于启动其他构建操作(例如clang)的包装工具。

我已经完全重新安装了Xcode,没有任何改变。构建系统设置为默认值。

是什么导致了这种行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-02 23:20:17

installation instructions for watchman会指导您这样设置kern.maxfiles

代码语言:javascript
运行
复制
 $ sudo sysctl -w kern.maxfiles=10485760
 $ sudo sysctl -w kern.maxfilesperproc=1048576

在macOS高山上,这两个值的默认设置均为131072。Watchman的建议是对内核的性能关键设置进行80倍的更改。调整这些值可能会导致不同的性能特征,特别是对于文件繁重的操作,如编译。

Watchman更改了限制,以便允许它同时查看更多文件。

然而,Xcode会开始索引你的项目,并打开尽可能多的文件(通过kern.maxfiles)。在编译阶段,Xcode启动xcexec,它将关闭所有打开的文件描述符进行索引,然后才启动构建步骤子过程。该操作应该几乎不需要任何时间。但在更改了kern.maxfiles之后,它突然发生了变化。

我在2015年年中的macOS 10.13.3,Xcode9.2.0上进行了基准测试。

根据我的基准测试,kern.maxfilesperproc对Xcode`s的构建性能没有影响。

一旦kern.maxfiles超过327680,Xcode构建的性能就会受到严重影响。

如果您需要支持具有更大项目的watchman,我建议将kern.maxfiles设置为(不大于) 327680。

请注意,使用sysctl设置kern.maxfiles在重新启动后不会持久存在。/Library/LaunchDaemons/limit.maxfiles.plist中的Adjust the values

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48585732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档