Xcode 4-性能下降


128

我对Xcode 4确实存在一个问题,它对用户交互的响应速度非常慢,例如,编辑代码,滚动区域等。这种情况尤其发生在具有许多控制器/视图文件等的大型项目中。

我完全擦干了硬盘,并在前一周重新安装了Snow Leopard和Xcode,但稳定地将其恢复为令人沮丧的响应时间(经过数天),从而极大地破坏了工作流程。

我有时还通过Organizer-> Projects删除了该项目的“派生数据”,但效果不大。

我想知道是否有什么办法可以提高性能,而不是在一开始就获得更高规格的机器。

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

万一我们需要升级,我还想知道人们是否在性能良好的机器上从Xcode 4体验到了这种较差的性能(这会使我们的硬件升级变得毫无意义,因为它是MacBook上唯一出现性能问题的Xcode)。

如果有人有任何建议或建议,甚至可以让我们知道改进的硬件如何影响Xcode在较大项目树上的性能,那么这将是非常有帮助的,对于其他处于相似位置的开发人员来说也是宝贵的资源。


我在这篇文章中做了一个相当漫长的写了对的Xcode 4.2:stackoverflow.com/questions/7780663/...
贾斯汀

1
我找到了比这里解释的所有解决方案更好的解决方案。我切换到AppCode。是的,这是99美元,但比购买新Mac便宜。我有一台2010年的MacBook Pro。它的处理器比任何MacBook Air都要快,但是在办公室里使用它们的人仍然可以获得更快的速度。我已经重新安装了Lion,然后为Mountain Lion进行了全新安装,仍然没有运气。所以现在我使用AppCode,再次感到高兴。
HotFudgeSunday

1
不幸的虚假。AppCode比Xcode还要慢。似乎是一个Java应用程序。它包含很多需要后台处理的精美代码完成,自动#import等。在某些情况下可能会更好,但不能避免Xcode的性能下降。
Gabe Rainbow

Answers:


161

如果清除工作空间文件,则有助于加快速度。

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

在此处输入图片说明

接下来,删除project.xcworkspace

在此处输入图片说明

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

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


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


删除工作区确实解决了问题,但是我认为您确实不需要得到该applet heheh
Vincent Bacalso

3
哇-由于沙滩球不断,我一直在扯头发,现在它就像梦一样在运转。感谢绝对必要的提示。值得一提的是,它确实会暂时重置窗口布局(可能会或可能不会很明显),但这是一个很小的代价。另外,如果人们想手动删除工作区文件,则可以按住Control键并单击其xcodeproj文件,选择“显示包内容”,然后删除或移动.xcworkspace文件。
Erik Asmussen,

11
@sudo令人难以置信,但现在我已经失去了表演的借口,无法为自己购买新的,更快的MBP!
Daniel Blezek 2011年

我遇到类似的性能问题。我在窗口顶部中间的小状态窗格中看到的一件事是一条消息,内容为“索引|处理了1个文件中的0个”(数字仅是示例)。这还会加剧性能下降吗?
Milemeow 2011年

3
这是错误的建议-xcworkspace目录包含您项目的一些核心文件。在一个非常简单的项目中,这些文件将丢失,并且很好,因此您可能还没有意识到这一点。在复杂的项目上,例如共享的Exectuable,共享的方案等,您将破坏您的项目。请参阅.gitignore问题,以安全删除xcworkspace中的WHICH文件的详细信息-哪些不行!stackoverflow.com/questions/49478/…–
亚当

46

重要更新:Xcode 6的路径已更改(感谢dcc注释!)!我只是添加了另一种方法。


还有一个不错的技巧,可以通过使用以下代码行创建ram磁盘来加快构建速度:

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

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

然后,您告诉Xcode将派生数据存储在那里 在此处输入图片说明

您不能告诉Xcode直接在其中存储iPhone Simulator数据,但是您可以通过执行以下操作在ramdisk上创建一个文件夹并创建一个符号链接,而不是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

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

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

更新2013-03-12:

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

  2. 使用新的MBP(包含SSD驱动器),我不再需要此方法。Xcode像地狱般运行:)。我希望这不会被视为宣传重大水果问题的广告,而只是一份经验报告...


2
哦,伙计..这真的很棒。但是重要:这将从模拟器中清除您的核心数据...您将丢失到目前为止所做的所有测试结果。因此,感谢您的构建速度大大提高,但警告本来是不错的=)
SebastianFlückiger2012年

2
对于执行此操作的任何人,请注意,您想保留的一件事就是您的派生数据文件夹(即符号文件)。部署应用程序后,您希望将其符号文件保存在安全的地方,以防您需要通过崩溃报告进行调试
SystematicFrank

1
@FranciscoGarcia如果您通过存档通过xcode组织器部署应用程序,则dSYM将保存在存档中。这存储在派生数据文件夹的外部(至少它在xcode的当前版本-4.6上)
Danny Parker

1
@imcaptor您可以使用Automator创建执行脚本的程序。在系统偏好设置中,转到“用户和组”->“登录项”,然后添加该程序。我敢打赌,有一种更简单的方法,但是这种方法有效
benjamin.ludwig

1
路径〜/ Library / Application \ Support / iPhone \ Simulator似乎不再正确。请更新。
davidcondrey 2014年

9

在“常规首选项”中禁用“实时发布”具有明显的不同。对于频繁重新运行的情况,我还设置了未启用gdb的方案(没有gdb可以大大加快启动速度)。


7

对我来说,将Xcode设置为以32位模式运行(默认为64位)后,Xcode的性能得到了极大的提高。它几乎与旧的Xcode 3一样快。您可以通过右键单击应用程序(在/Developer/Applications/XCode.app中)并选择“ 获取信息”并选中“ 以32位模式打开”来切换到32位。


在10.6.8上的MBP 2.2Ghz i7上对我没有任何影响。您有什么计算机/操作系统?
埃托雷,2011年

我有一台Mac Mini,配备2.26 GHz英特尔酷睿2 Duo,10.6.8、2GB内存。
gyozo kudor

7

Xcode 4.2、4.3:

文件索引器的主要问题(运行Spotlight的同一代码,已经存在很多年了吗?可能)。

禁用与“监视”文件有关的所有不必要的东西:

  1. 快速帮助(注意:永远不要单击“ QH”选项卡!即使隐藏助手仍会导致代码运行!在移至新文件之前切换到其他选项卡...)
  2. SCM管理(SVN,Git等-Xcode的git支持仍然有点漏洞(可能会破坏项目),并且它们已经放弃了SVN支持,因此无论如何您都不应该使用它!)
  3. 尝试删除您的工作区文件夹(根据公认的答案),但前提是该文件在磁盘上很大
  4. ...您可以找到的与单个文件状态相关的任何其他信息

Xcode 4.4、4.5:

这些版本的内存泄漏严重,文件索引器损坏(但优于4.2和4.3),并且可能存在私有交换文件问题。

最终,通过禁用/启用交换空间(如何在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交换空间

最后一个很有趣。如果您有很多内存(例如16 GB),请尝试永久禁用交换空间。Xcode的运行速度更快,因为OS X Lion在内存管理中存在一些错误,即使在不需要时也可以在其中进行交换。

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

(如果您有SSD,则唯一可以知道其是否开始交换的方法就是等待它“变慢”。否则,您会在听到HD震荡声后立即知道:不再有系统交换文件,因此唯一可能的原因是Xcode)

即使您有2GB的内存,您也可以安全地禁用交换功能(当我尝试这样做时,我每月只有一次OS X崩溃,以这种方式运行了一年),但是这会阻止您对文件进行高端视频/图形处理需要几千兆字节才能运行。随意尝试几个星期,看看会发生什么。

但是...只要重新启动Xcode就会减慢工作速度。在具有较少RAM的计算机上,关闭时Xcode的私有交换文件似乎立即被删除(在具有大量RAM的计算机上似乎没有发生)


4

在我看来,这些响应都没有真正提高性能(随着时间的推移,Xcode 4.1变得几乎不可用,只是立即退出并有所帮助)。

但是,我发现,如果我继续关闭所有文档(control-command-W),它似乎保持快速运行。Xcode会自动将您单击的所有文档以某种方式保留在内存中,您可以使用控制命令的向左/向右箭头在它们之间导航。如果您不小心打开了太多(尤其是IB窗口),它就会停止运行。只是立即关闭所有打开的文档,然后似乎可以缓解这种情况,而无需完全重新启动。



2

遇到这些问题的每个人都应该在Mac OS X Lion上尝试Xcode 4.1。我惊奇地发现多少它是在相同的硬件更快,响应(MacBook Pro的2.66 GHz的Core 2 Duo处理器与4GB的RAM在这里)。

我想他们在此版本中修复了许多性能错误。


2
在类似的设置下,对于我来说仍然很慢。(MacBook Pro 2.26 GHz Intel Core 2 Duo,2 GB RAM上的Xcode 4.1和Mac OSX Lion)
Andrei

1

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


1

我面临着同样的问题。由于测试版仍保持不变,因此部分修复了这些问题。似乎Xcode内部存在一个或多个泄漏,这些泄漏正在浮动您的内存。使用集成的Interface-Builder时,您可以很好地观看这个漂亮的“功能”。在为苹果祈祷和填写错误报告下,有两种可能的解决方案:

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

我有一个全新的iMac Mid 2011、3,1 i5、12gb Ram + 1gb图形内存,问题在这里并没有给我带来很大的困扰,但是在我购买它之前,我已经在MacBook上进行了开发,只是让自己可以工作机器,值得花钱,请相信我:)
Tim Specht

0

我已经尝试了该线程和(许多)其他线程中建议的所有内容,唯一对我有用的是“禁用”该项目的Subversion。这是最糟糕的部分-我可以“禁用”内置SVN插件的唯一方法是使用虚假的IP地址提取我的/ etc / hosts文件,从而实际上导致所有SVN访问失败。

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

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

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

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

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

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


尝试将文件夹/Applications/Xcode.app/Contents/PlugIns/IDESubversion.ideplugin重命名为其他结尾的文件。我使用了类似的技巧来禁用Git插件。
John McFarlane

0

您可以避免索引Xcode。这样做可以提高系统的内存性能,但也会阻止IDE功能(例如自动补全)和跳转到定义的工作。

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

0

如果使用界面生成器/编辑器修改.xib文件时性能低下,请转到.xib的文件检查器下并禁用自动布局。对.xib进行编辑,然后作为最后一步,重新启用自动布局并添加或调整约束。





0

我发现了一个提高XCode 4编译性能的技巧:当您在Xcode中运行或编译或进行任何其他处理时,如果它停止打开活动监视器,请选择Xcode进程,然后单击示例进程。它将使进程解开并重新正常运行,从而允许在合理的时间内构建应用程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.