Xcode 4 – 性能下降

我有一个问题,Xcode 4对用户交互的响应非常慢,例如编辑代码,滚动区域等。特别是在大型项目中有很多控制器/视图文件时

我完全擦除了硬盘,并在另外一周重新安装了Snow Leopard和Xcode,但是稳定地再次令人沮丧的响应时间(多天)扰乱了工作stream程。

我也有时通过组织者 – >项目删除了项目的“派生数据”,这个效果不大。

我想知道是否有任何事情可以改善性能,而不是首先获得更高性能的机器。

仅供参考我正在运行带有2GHz Intel Core 2 Duo处理器和4GB内存的MacBook。

如果我们需要升级,我还想知道人们是否在Xcode 4上遇到了这样糟糕的性能问题(这会使我们的硬件升级变得毫无意义,因为只有Xcode在MacBook上有任何性能问题)。

如果任何人有任何的build议或build议,甚至可以让我们知道如何改善硬件的影响Xcode的大型项目树的performance,那将是非常有益的,也是一个类似的位置的其他开发者宝贵的资源。

如果你清除工作区文件,它有助于加快速度。

首先,确保Xcode没有打开。 现在find你的项目文件。 用鼠标右键单击它,然后selectShow Package Contents

在这里输入图像描述

接下来,删除project.xcworkspace

在这里输入图像描述

打开Xcode,享受更快的性能!

感谢: http : //meachware.blogspot.com/2011/06/speed-up-xcode-4.html


编辑:我收到了几个意见,这一点注意到,对于一些项目,这可能会导致问题。 在执行这些步骤之前,请确保您有项目的备份,并且不要忘记在之后检查并testing您的项目 确保你仍然拥有所有的可执行文件和scheme。

重要更新:path改变了Xcode 6(感谢评论dcc)! 我只是添加了另一种方式。


还有一个很好的技巧,通过使用下面这行代码创build一个ram磁盘来build立系统:

 diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://8475854` 

这将创build一个大小约为4 GB的内存磁盘映像。 但要小心,你需要有足够的记忆。 当然,你可以创build一个像2 GB(这将是4237927)较小的图像。

然后你告诉Xcode在那里存储派生数据 在这里输入图像描述

你不能告诉Xcode直接在那里存储iPhone Simulator数据,但是你可以在ramdisk上创build一个文件夹,并创build一个符号链接来代替iPhone Simulator目录。

Xcode 6:

 cd /Volumes/ramdisk mkdir CoreSimulator rm -R ~/Library/Developer/CoreSimulator ln -s /Volumes/ramdisk/CoreSimulator ~/Library/Developer/CoreSimulator 

较旧的Xcode版本:

 cd /Volumes/ramdisk mkdir iPhone\ Simulator rm -R ~/Library/Application\ Support/iPhone\ Simulator ln -s /Volumes/ramdisk/iPhone\ Simulator ~/Library/Application\ Support/iPhone\ Simulator 

如果我使用这种设置为模拟器构build,那就马上开始运行:)

请注意,重新启动计算机时,RAM磁盘将消失,因此创build脚本或启动时运行的某个内容可能是个好主意。 不要放置任何数据,你想保持!

更新2013-03-12:

  1. 阅读下面的Francisco Garcia的评论!

  2. 使用我的新MBP(包含SSD驱动器),我不再需要这种方法。 Xcode运行像地狱:)。 我希望这不是广告的大果关注,这只是一个经验报告…

在一般偏好中禁用实时问题已经有了明显的改变。 我还设置了一个没有启用gdb的scheme,在我经常重新运行的情况下(没有gdb加速启动)。

我不知道这是否对任何人都有帮助,但是对于我来说,XCode在将其设置为以32位模式运行(默认为64)后性能提高了。 它几乎与旧的xcode 3一样快。您可以通过右键单击应用程序(位于/Developer/Applications/XCode.app )并select获取信息在32位模式下检查打开来切换到32位。

Xcode 4.2,4.3:

文件索引器的主要问题(运行Spotlight的代码相同,可能是多年的bug)。

禁用与“观看”文件有关的所有非必要内容:

  1. 快速帮助(注意:不要点击QH标签!甚至隐藏助手仍然会导致代码运行!切换到另一个标签之前,移动到一个新的文件…)
  2. SCMpipe理(SVN,Git等) – Xcode的git支持仍然是一个小错误(可能会损坏项目),并且他们已经放弃了SVN支持,所以您不应该使用它!
  3. 尝试删除您的工作空间文件夹(按照接受的答案),但只有当它在磁盘上大
  4. …任何你可以find有关个人档案的状态

Xcode 4.4,4.5:

这些版本有一个主要的内存泄漏,破损的文件索引器(但优于4.2和4.3),也可能是一个私人交换文件的问题。

最后,通过禁用/启用交换空间( 如何在Mac OS X中禁用或启用交换 )以及在多台机器上使用普通硬盘驱动器,并通过在2 GB RAM(高达16 GB RAM)的机器上运行实验,我发现Xcode似乎运行自己的交换空间,独立于OS X交换(!)。

(这可能是一个错误 – 也许有一个额外的OS X交换forms,我不知道 – 但系统交换文件没有变大或变小,而在一些机器上,磁盘空间跳上千兆字节)

观察到的:

  1. Xcode 4.4 / 4.5将随机取出系统中的所有内存(10 GB的一个小项目),以便系统的其他部分停下来等待磁盘交换

    1. WORSE:在SSD的MacBook上,你不会知道这件事发生了
    2. 最糟糕的是…即使它可能会损坏您的硬盘(SSD不喜欢抖动写入)
  2. Xcode会占用硬盘,因此可以完成其(破坏的)内部文件索引。 当系统内存变低时,OS X需要进行交换…它被卡在等待Xcode索引文件…而Xcode需要更多的内存,而它等待…和:BOOM! 在较小的系统上,OS X最终挂起

  3. Xcode不需要OS X交换空间

最后一个很有趣。 如果你有很多内存(例如16 GB),请尝试永久禁用交换空间。 Xcode运行速度更快,因为OS X Lion在内存pipe理中存在一些漏洞, 即使不需要时也会交换。

如果xcode突然变慢,它将在内部进行交换,此时您可以杀死并重新启动它。

(如果你有一个固态硬盘,你可以知道它是否开始交换的唯一方法就是等待它“变慢”,否则,一旦听到HD硬盘就知道了:没有系统交换文件,所以只有可能的原因是Xcode)

即使你有2GB内存,你也可以安全的禁用swap(我每个月只有一次OS X的崩溃,这种方式运行了一年),但是它会阻止你用文件做高端的video/graphics工作那需要几千兆字节才能运行。 随意尝试几个星期,看看会发生什么。

但是…重新启动Xcode,只要它减慢工程奇迹。 在内存较less的机器上,Xcode的私有交换文件似乎在closures时立即被删除(似乎不会在具有大量RAM的计算机上发生)

这些反应都没有真正改善我的情况下的性能(随着时间的推移Xcode 4.1变得几乎不可用,只有现在退出,然后帮助)。

但是,我发现如果我继续closures所有的文档(control-command-W),它似乎保持快速。 Xcode会自动将您在内存中点击的所有文档保存在内存中,您可以使用控制命令左/右箭头在它们之间导航。 如果你不小心打开太多(特别是IB窗口),它会爬行停下来。 只是closures所有打开的文档,然后似乎缓解这一点,而不需要做一个完整的重新启动。

@lukasz的以下post在他的回答(closures的实用面板和快速帮助窗格)中帮了一些,特别是他的项目#8,

Xcode 4变得非常缓慢,杀死我的硬盘

遇到这些问题的每个人都应该在Mac OS X Lion上试用Xcode 4.1。 我惊讶地发现,在相同的硬件上(这里有4GB内存的Macbook Pro 2.66 GHz Core 2 Duo),它的速度和响应速度有多快。

我想他们在这个版本中修复了大量的性能问题。

我面临同样的问题,testing版本以来一直是部分固定的,但仍然是持续的。 看来,Xcode内部有一个(或更多…)泄漏,这是漂浮你的记忆,你可以很好地观看这个漂亮的“function”,当使用集成的Interface-Builder。 向苹果祈祷并填写错误报告的两种可能的解决scheme:

  1. 不要使用内部生成器,而是启动外部应用程序
  2. 不时退出Xcode,这应该释放内存泄漏

对不起,但我觉得没有更好的解决scheme….:/

使用时间configuration文件模板启动仪器,并将其附加到正在运行的Xcode(或者如果您的问题在构build过程中,则为clang,llvm等)。 你应该能够很快看到问题。 我在不同的机器上看到了非常不同的原因。 版本控制通常是一个罪魁祸首。

我已经尝试了一些在这个线程和其他许多人build议的东西,唯一对我有用的是“禁用”项目的颠覆。 这里是蹩脚的部分 – 我可以“禁用”内置的SVN插件的唯一方法是将我的/ etc / hosts文件与一个虚假IP地址绑定,从而导致所有SVN访问失败。

我尝试删除/重命名/ Developer / Library / Xcode / PrivatePlugIns中的IDESubversion.ideplugin,但Xcode 4.2.1 pukes并拒绝启动。

我尝试从Xcode中删除我的SVN存储库每次重新启动Xcode,但Xcode在几分钟内崩溃。

我尝试通过文件 – >源代码控制 – >隐藏远程状态(对我没有任何帮助)closures“远程状态”。

现在,我已经将我的SVN主机名设置为1.2.3.4在我的主机文件中,Xcode工作得很好,几乎每次在文件之间切换时都不会显示SBBOD。

 $ grep 1.2.3.4 /etc/hosts 1.2.3.4 svn.myhost.com 

然后,当我真的想要进行版本控制时,我必须解除主机文件并使用cmd行svn。

我发现了一个加速XCode 4编译性能的技巧:

当你在xcode中运行或者编译或者其他处理时,它会打开活动监视器并selectxcode进程,然后点击示例进程。 它会使程序卸载并重新运行,这样可以在合理的时间内创build应用程序。 至less这对我有用。

在我的情况下,这是内存使用情况。

在这里输入图像描述

尝试杀死一些Chrome标签,或很less使用的应用程序。 这应该有帮助!

我终于通过closuresgitfunction让我的xcode正常工作。

在这里有很多好的build议,我通过禁用快照解决了我的问题,如下所述:

在Xcode 5中编辑故事板非常慢

你可以避免索引Xcode。 这样做可以提高系统的内存性能,但也会阻止IDEfunction,如自动完成和跳转到定义的工作。

 $ defaults write com.apple.dt.XCode IDEIndexDisable 1 

如果在使用界面编辑器/编辑器修改.xib文件时性能下降,那么请在File Inspector下为.xib文件启用并禁用自动布局 。 对.xib进行编辑,然后作为最后一步,重新启用自动布局并添加或调整约束。