Xcode 4 - 性能下降

时间:2011-06-15 09:30:37

标签: xcode performance xcode4

我有一个问题,Xcode 4对用户交互的反应非常缓慢,例如:编辑代码,滚动区域等。对于具有许多控制器/视图文件等的大型项目,尤其如此。

我完全擦拭了硬盘,并在另一周内重新安装了Snow Leopard和Xcode,但是它再次(令人沮丧的)响应时间(过了几天)大大破坏了工作流程。

我还有时通过管理器删除了项目的“派生数据” - >项目和这几乎没有效果。

我想知道除了首先获得更高规格的机器之外,我还能做些什么来提高性能。

仅供参考我正在使用2GHz的Intel Core 2 Duo处理器和4GB的RAM运行MacBook。

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

如果有人有任何建议或建议,或者甚至可以告诉我们硬件如何改进Xcode在大型项目树上的表现,那么这对于处于类似位置的其他开发者来说非常有用,也是一种宝贵的资源。

17 个答案:

答案 0 :(得分:161)

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

首先,确保Xcode未打开。现在找到你的项目文件。右键单击它,然后选择Show Package Contents

enter image description here

接下来,删除project.xcworkspace

enter image description here

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

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


编辑:我对此有几点评论指出,对于某些项目,这可能会导致问题。在执行这些步骤之前,请确保备份项目,并且不要忘记随后检查并测试项目。确保您仍然拥有所有可执行文件和方案。

答案 1 :(得分:46)

重要更新:Xcode 6的路径已更改(感谢评论dcc)!我刚刚添加了替代方法。


通过使用以下代码行创建ram磁盘,还有另一个很好的技巧来强化构建:

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

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

然后你告诉Xcode将派生数据存储在那里enter image description here

您无法告诉Xcode直接存储iPhone模拟器数据,但您可以在ramdisk上创建一个文件夹,并通过以下方式创建符号链接而不是iPhone模拟器目录:

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

如果我使用此设置为模拟器构建,它立即启动并运行:)

请注意,当您重新启动计算机时,ram磁盘将消失,因此最好创建一个在启动时运行的脚本或其他内容。并且不要放置您想要保留的任何数据!!!

更新2013-03-12:

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

  2. 使用我的新MBP(包含SSD驱动器)我不再需要这种方法了。 Xcode像地狱一样运行:)。我希望这不会被视为关注大型水果的广告,而只是一份体验报告......

答案 2 :(得分:9)

在“常规首选项”中禁用实时问题已经产生了明显的不同。我还设置了一个没有启用gdb的方案,因为我经常重新运行(没有gdb加速启动)。

答案 3 :(得分:7)

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

答案 4 :(得分:7)

Xcode 4.2,4.3:

文件索引器的主要问题(运行Spotlight的代码相同,多年来一直有错误?可能)。

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

  1. 快速帮助(注意:永远不要点击QH标签!即使隐藏助手仍然会导致代码运行!切换到另一个标签,然后再转移到新文件...)
  2. SCM管理(SVN,Git等 - Xcode的git支持仍然是一个小错误(可以破坏项目),他们已经放弃了SVN支持,所以你不应该使用它!)
  3. 尝试删除工作区文件夹(根据已接受的答案),但仅限于磁盘上的大文件
  4. ...您可以找到与个别文件状态相关的任何其他内容
  5. Xcode 4.4,4.5:

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

    最终,通过禁用/启用交换空间(how to disable or enable swapping in mac os x),并在多台计算机上使用普通硬盘驱动器,并在具有2 GB RAM至16 GB RAM的计算机上运行实验,我发现Xcode似乎运行自己的交换空间,独立于OS X交换(!)。

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

    观察到的:

    1. Xcode 4.4 / 4.5将随机占用系统中的所有RAM(10个GB用于一个小项目),以便系统的其余部分停止运行,等待磁盘交换等等

      1. WORSE:在使用SSD的MacBook上,你不会知道这已经发生了
      2. 最糟糕的是:......即使它可能会破坏你的硬盘(SSD不喜欢颠覆写作)
    2. Xcode将占用对硬盘的访问权限,因此它可以执行其(损坏的)内部文件索引。当系统内存变低时,OS X需要进行交换......它等待Xcode索引文件......而Xcode在等待时需要更多内存......并且:BOOM!在较小的系统上,OS X最终会挂起

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

    4. 最后一个非常有趣。如果您有大量内存(例如16 GB),请尝试永久禁用交换空间。 Xcode运行速度更快,因为OS X Lion在内存管理中存在一些错误,即使它不需要,它也会交换

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

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

      你可以安全地禁用交换,即使你有2GB的RAM(我试过这个时每个月只有一次OS X崩溃,用这种方式运行一年),但它会阻止你做高端视频/图形处理需要数千兆字节才能运行的文件。随意尝试几周,看看会发生什么。

      但是......每当它减速时重新启动Xcode就会产生奇迹。在RAM较少的机器上,当你关闭时,Xcode的私有交换文件似乎立即被删除(似乎没有在有大量RAM的机器上发生)

答案 5 :(得分:4)

在我的情况下,这些响应都没有真正改善性能(随着时间的推移,Xcode 4.1变得难以使用,只是暂时退出它然后帮助了。)

然而,我发现如果我继续关闭所有文件(control-command-W),它似乎保持快速。 Xcode会以某种方式自动保存您在内存中单击的所有文档,并且可以使用control-command左/右箭头在它们之间导航。如果你不小心打开太多(特别是IB窗户),它就会爬到停止状态。现在关闭所有打开的文档似乎可以在不需要完全重启的情况下缓解这一点。

答案 6 :(得分:2)

@lukasz的以下文章有所帮助,特别是他的答案中的第8项(封闭的实用工具面板和快速帮助窗格)

Xcode 4 became extremely slow and kills my hard drive

答案 7 :(得分:2)

遇到这些问题的每个人都应该在Mac OS X Lion上试用Xcode 4.1。令我感到惊讶的是很多更快,响应更快,它是在相同的硬件上(Macbook Pro 2.66 GHz Core 2 Duo,4GB内存)。

我认为他们在此版本中修复了大量的性能错误。

答案 8 :(得分:1)

我面临着同样的问题,自从beta版本开始以来,它们已经部分修复但仍然存在。似乎Xcode内部有一个(或多个......)泄漏,这些泄漏会使你的内存浮动,你可以在使用集成的Interface-Builder时很好地观察这个漂亮的“功能”。祈祷和填充错误报告给苹果的两个可能的解决方案:

  1. 请勿使用内部构建器,而是启动外部应用程序
  2. 不时退出Xcode,这应该释放泄露的内存
  3. 抱歉,但我认为没有更好的解决方案....:/

答案 9 :(得分:1)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

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

答案 12 :(得分:0)

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

Editing storyboard in Xcode 5 is very slow

答案 13 :(得分:0)

我终于通过关闭git功能让我的xcode工作正常。

答案 14 :(得分:0)

就我而言,这是RAM的使用。

enter image description here

尝试杀死一些Chrome标签或很少使用过的应用。这应该有帮助!

答案 15 :(得分:0)

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

当您在xcode中运行或编译或任何其他处理时,它会停止打开活动监视器并选择xcode进程,然后单击示例进程。它将使进程不再正常运行并再次运行,从而允许在合理的时间内构建应用程序。至少这对我有用。

威尔

答案 16 :(得分:0)

我已经尝试过在这个帖子和[众多]其他人中提出的所有内容,对我来说唯一有效的方法就是“禁用”项目的颠覆。这是一个糟糕的部分 - 我可以“禁用”内置SVN插件的唯一方法是使用伪造的IP地址来保护我的/ etc / hosts文件,从而有效地导致所有SVN访问失败。

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

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

我尝试通过文件关闭“远程状态” - >源控制 - >隐藏远程状态(对我没有任何作用)。

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

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

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