Xcode 4 - 性能下降

Kzr*_*ill 128 performance xcode xcode4

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

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

我有时也通过Organizer - > Projects删除了项目的"派生数据",但收效甚微.

我想知道除了在第一个实例中获得更高规格的机器之外,我还能做些什么来提高性能.

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

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

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

sud*_*-rf 161

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

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

在此输入图像描述

接下来,删除project.xcworkspace.

在此输入图像描述

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

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


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

  • @sudo难以置信,但现在我已经失去了我的性能借口,无法为自己买一个新的,更快的MBP!?! (11认同)
  • 哇 - 由于不断的沙滩球,我正在撕扯我的头发,现在它像梦一样运转.感谢绝对必要的提示.值得一提的是,它会暂时重置您的窗口布局(可能会或可能不会很明显),但这是一个很小的代价.此外,如果人们想要手动删除工作区文件,他们可以控制 - 单击他们的xcodeproj文件,选择"显示包内容",然后删除或移动.xcworkspace文件. (3认同)
  • 这是一个不好的建议 - xcworkspace目录包含项目的一些核心文件.在一个非常简单的项目中,这些文件将丢失,并且它会很好,因此您可能还没有意识到这一点.在复杂的项目中 - 例如使用共享的Exectuables,共享的Schemes等 - 您将破坏您的项目.比较.gitignore问题,了解xcworkspace中的WHICH文件的详细信息是否可以安全删除 - 哪些不是!http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects/12021580#12021580 (3认同)

ben*_*wig 46

重要更新:Xcode 6的路径已更改(感谢评论dcc)!我刚刚添加了另一种方式.


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

diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://8475854`
Run Code Online (Sandbox Code Playgroud)

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

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

你不能告诉Xcode直接在那里存储iPhone模拟器数据,但你可以在ramdisk上创建一个文件夹,并通过这样做创建一个符号链接而不是iPhone模拟器目录:

Xcode 6:

cd /Volumes/ramdisk
mkdir CoreSimulator
rm -R ~/Library/Developer/CoreSimulator
ln -s /Volumes/ramdisk/CoreSimulator ~/Library/Developer/CoreSimulator
Run Code Online (Sandbox Code Playgroud)

较旧的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
Run Code Online (Sandbox Code Playgroud)

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

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

更新2013-03-12:

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

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

  • 哦,伙计......这个真的很棒.但重要的是:这将从模拟器中删除你的coredata ...你将失去你迄今为止所做的每一个测试结果.所以感谢大大加快构建,但警告本来很好=) (2认同)
  • 对于任何人这样做只是要知道,有一件事你想要保持你的派生数据文件夹,你的符号文件.部署应用程序后,如果要使用崩溃报告进行调试,则需要保留其符号文件的安全位置 (2认同)

gre*_*reg 9

在"常规首选项"中禁用实时问题已经产生了明显的不同.我还设置了一个没有启用gdb的方案,用于我经常重新运行的情况(没有gdb加速启动相当多).


gyo*_*dor 7

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


Ada*_*dam 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的RAM(当我尝试这个时,每个月只有一次OS X崩溃,以这种方式运行一年),但它会阻止你使用文件进行高端视频/图形处理只需要运行几千兆字节.随意尝试几周,看看会发生什么.

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