Xcode 4-パフォーマンスが遅い


128

Xcode 4で問題があり、ユーザーの操作(コードの編集、領域のスクロールなど)への応答が非常に遅い。これは特に、多数のコントローラー/ビューファイルなどの大規模プロジェクトで発生します。

先週、ハードディスクを完全に消去し、Snow LeopardとXcodeを再インストールしましたが、着実に(数日かけて)苛立たしい応答時間になり、ワークフローが大幅に中断されました。

また、オーガナイザー->プロジェクトでプロジェクトの「派生データ」を削除することもありますが、これによる影響はほとんどありません。

最初に、より高性能なマシンを入手する以外に、パフォーマンスを向上させるために何かできることがあるかどうか疑問に思っています。

参考までに、MacBookをIntel Core 2 Duoプロセッサと2GHz、4GBのRAMで実行しています。

アップグレードが必要な場合は、適切な仕様のマシンで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 2013年

1
不幸な虚偽。AppCodeはXcodeよりもさらに低速です。Javaアプリのようです。バックグラウンドプロセスを必要とする多くの豪華なコード補完、自動#importなどを備えています。Xcodeのパフォーマンスの低下を回避するためではなく、状況によってはより良い場合があります。
Gabe Rainbow

回答:


161

ワークスペースファイルを削除すると、高速化に役立ちます。

まず、Xcodeが開いていないことを確認します。次に、プロジェクトファイルを見つけます。それを右クリックして、を選択しますShow Package Contents

ここに画像の説明を入力してください

次に、を削除しproject.xcworkspaceます。

ここに画像の説明を入力してください

Xcodeを開いて、より高速なパフォーマンスをお楽しみください!

おかげで:http : //meachware.blogspot.com/2011/06/speed-up-xcode-4.html


編集:これについていくつかのコメントをいただきましたが、一部のプロジェクトでは、これが問題を引き起こす可能性があるということです。これらの手順を実行する前にプロジェクトのバックアップがあることを確認し、後でプロジェクトを確認してテストすることを忘れないでください。すべての実行可能ファイルとスキームがまだあることを確認してください。


ワークスペースを削除しても問題は解決しましたが、実際にはそのアプレットを取得する必要があるとは思いません
Vincent Bacalso

3
うわー、私は絶え間ないビーチボールで髪を引き裂いていたが、今は夢のように走っている。絶対に必要なヒントをありがとう。これはウィンドウレイアウトを一時的にリセットする(これは明らかかもしれないし、そうでないかもしれません)ことは言及する価値がありますが、支払うのは少額です。また、ワークスペースファイルを手動で削除したい場合は、xcodeprojファイルをコントロールクリックし、[パッケージの内容を表示]を選択して、.xcworkspaceファイルを削除または移動します。
Erik Asmussen、2011

11
@sudo信じられないが、今ではパフォーマンスの言い訳を失い、新しい高速なMBPを購入できない!?!
ダニエルブレゼック'18

同様のパフォーマンスの問題があります。ウィンドウの上部中央にある小さなステータスペインに1つ表示されるのは、「インデックス作成| 1ファイルのうち0を処理しました」というメッセージです(数値は単なる例です)。それも遅いパフォーマンスに追加されているのでしょうか?
Milemeow

3
これは悪いアドバイスです。xcworkspaceディレクトリには、プロジェクトのコアファイルの一部が含まれています。非常に単純なプロジェクトでは、これらのファイルは失われ、問題はありません。そのため、おそらくこれをまだ認識していません。複雑なプロジェクト(共有の実行可能ファイル、共有のスキームなど)では、プロジェクトが破損します。xcworkspace内のWHICHファイルの詳細については、.gitignoreの質問を参照してください。安全に削除できますが、そうではありません。stackoverflow.com/questions/49478/...
アダム・

46

重要な更新:Xcode 6のパスが変更されました(コメントdccに感謝)!代わりの方法を追加しました。


次のコード行を使用してRAMディスクを作成することにより、ビルドを高速化するもう1つの方法があります。

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

これにより、約4 GBのサイズのメモリ内ディスクイメージが作成されます。ただし、十分なメモリが必要になるので注意してください。もちろん、2 GBのような小さなイメージ(4237927)を作成できます。

次に、そこに派生データを保存するようにXcodeに指示します ここに画像の説明を入力してください

XcodeにiPhoneシミュレーターのデータを直接格納するように指示することはできませんが、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年3月12日更新:

  1. 以下のフランシスコガルシアからのコメントを読んでください!

  2. 私の新しいMBP(SSDドライブを含む)では、この方法はもう必要ありません。Xcodeは地獄のように実行されます:)。これが大きな懸念事項の宣伝と見なされていないことを願っています。これは単なる体験レポートです...


2
ああ、これは本当に素晴らしい。ただし、重要:これにより、シミュレータからコアデータが消去されます...これまでに作成したすべてのテスト結果が失われます。非常に高速なビルドに感謝しますが、警告は
適切

2
これを行う人にとっては、派生データフォルダーであるシンボルファイルに保持したいことが1つあることに注意してください。アプリをデプロイしたら、クラッシュレポートでデバッグしたい場合に備えて、シンボルファイルをどこかに安全に保管する必要があります
SystematicFrank

1
@FranciscoGarciaアーカイブによってxcodeオーガナイザーを介してアプリを展開する場合、dSYMはアーカイブに含まれます。これは、派生データフォルダーの外に保存されます(少なくとも、現在のバージョンのxcode-4.6にあります)
Danny Parker

1
@imcaptor Automatorを使用して、スクリプトを実行するプログラムを作成できます。システム設定で、[ユーザーとグループ]-> [ログイン項目]に移動して、そのプログラムを追加します。もっと簡単な方法があるに違いないが、これはうまくいく
benjamin.ludwig

1
パス〜/ Library / Application \ Support / iPhone \ Simulatorは、もはや正しくないようです。更新してください。
davidcondrey 2014

9

General PreferencesでLive Issueを無効にすることで、明確な違いが生まれました。また、頻繁に再実行している状況でgdbを有効にせずにスキームを設定しました(gdbを使用しないと、起動がかなり高速化されます)。


7

私にとって、Xcodeは32ビットモードで実行するように設定した後(デフォルトでは64でした)、パフォーマンスが大幅に向上しました。これは、古いXcode 3とほぼ同じ速さです。32ビットに切り替えるには、(/ Developer / Applications / XCode.appで)アプリを右クリックし、[ 情報見る ]を選択して[32ビットモードで開く]をオンにします


10.6.8のMBP 2.2Ghz i7では、何の違いもありませんでした。どのコンピュータ/ OSをお持ちですか?
ettore 2011

2.26 GHzのIntel Core 2 Duo、10.6.8、2GBのメモリを搭載したMac Miniを持っています。
餃子クドール

7

Xcode 4.2、4.3:

ファイルインデクサーの主要な問題(Spotlightを実行するのと同じコードで、何年もバグがありましたか?)

ファイルの "監視"に関連する重要でないすべてのものを無効にします。

  1. クイックヘルプ(注:QHタブは絶対にクリックしないでください。アシスタントを非表示にしても、コードが実行されます。新しいファイルに移動する前に別のタブに切り替えてください...)
  2. SCM管理(SVN、Gitなど)-Xcodeのgitサポートはまだバグが多く(プロジェクトが破損する可能性があります)、SVNサポートが削除されているため、とにかく使用しないでください!)
  3. ワークスペースフォルダーを削除してみてください(承認された回答に従って)。ただし、ディスク上に大きい場合のみ
  4. ...個々のファイルのステータスに関連して他に見つけることができるもの

Xcode 4.4、4.5:

これらのバージョンには、主要なmemリーク、壊れたファイルインデクサー(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. さらに悪いことに、SSDを搭載したMacbookでは、これが起こったことを知らないでしょう。
    2. 最悪:...ハードディスクに損傷を与える可能性があります(SSDは書き込みのスラッシングが好きではありません)
  2. Xcodeはハードディスクへのアクセスを独占するため、その(壊れた)内部ファイルのインデックス作成を実行できます。システムメモリが少なくなり、OS Xがスワッピングを行う必要がある場合... Xcodeがファイルにインデックスを付けるのを待ってスタックします...そして、Xcodeが待機している間、より多くのメモリを消費します...および:BOOM!小規模なシステムでは、OS Xが最終的にハングします

  3. XcodeはOS Xのスワップ領域を必要としません

最後のものはとても面白いです。大量のメモリ(16 GBなど)がある場合は、スワップ領域を永続的に無効にしてみてください。OS X Lionはメモリ管理にいくつかのバグがあるため、Xcodeはより高速に実行さます。

xcodeが突然遅くなる場合、それは内部でスワップしています。その時点で、それを強制終了して再起動できます。

(SSDがある場合、スワップが開始されたかどうかを確認する唯一の方法は、SSDが「遅くなる」のを待つことです。それ以外の場合は、HDスラッシュが聞こえたらすぐにわかります。システムスワップファイルはもうないため、考えられる原因はXcodeのみです)

RAMが2GBの場合でも、スワップを安全に無効にできます(これを試したところ、1か月にOS Xのクラッシュが1回だけ発生し、1年間この方法で実行していました)。実行するには数ギガバイトが必要です。数週間試してみて、何が起こるか確認してください。

しかし...遅くなるたびにXcodeを再起動すると、不思議に機能します。RAMが少ないマシンでは、Xcodeのプライベートスワップファイルは、閉じるとすぐに削除されるようです(RAMが多いマシンでは発生しないようです)。


4

私の場合、これらの応答のどれも実際にパフォーマンスを向上させませんでした(時間の経過とともに、Xcode 4.1はほとんど使用できなくなり、現在それをやめるだけで助けられました)。

しかし、私がすべてのドキュメント(control-command-W)を閉じ続けると、高速のままであるように見えることがわかりました。Xcodeは、クリックしたすべてのドキュメントを何らかの方法でメモリに自動的に保持し、コントロールコマンドの左/右矢印でそれらの間を移動できます。誤って多く(特にIBウィンドウ)を開くと、クロールして停止します。開いているすべてのドキュメントを時々閉じるだけで、完全に再起動する必要なくこれを軽減するようです。



2

これらの問題が発生している場合は、Mac OS X LionでXcode 4.1を試してみてください。私はどのように驚いくらい、それは同じハードウェア(ここでは4GBのRAMを持つMacBook Proの2.66 GHzのCore 2 Duoプロセッサ)上でより高速で応答性。

彼らはこのリリースで多くのパフォーマンスバグを修正したと思います。


2
私にとっては、同様の設定ではまだ遅いです。(MacBook 2.26 GHz Intel Core 2 Duo上のXcode 4.1およびMac OSX Lion、2 GB RAM)
Andrei

1

時間プロファイルテンプレートを使用してInstrumentsを起動し、実行中のXcode(または問題がビルド中にある場合はclang、llvmなど)にアタッチします。問題をすぐに確認できるはずです。さまざまなマシンで非常にさまざまな原因を見てきました。多くの場合、バージョン管理が原因です。


1

同じ問題に直面しています。ベータ版のビルドはまだ永続的であるため、それらは部分的に修正されました。Xcodeがメモリをフロートさせている1つ以上のリークを内部的に受け取ったようです。統合されたInterface-Builderを使用すると、この気の利いた「機能」をよく見ることができます。バグレポートを祈ってアップルに記入することのできる2つの解決策:

  1. 内部ビルダーを使用せず、代わりに外部アプリケーションを起動します。
  2. Xcodeを時々終了します。これにより、リークされたメモリが解放されます。

私は真新しいiMac Mid 2011、3、1 i5、12GB RAM + 1GBグラフィカルメモリを手に入れましたが、問題はここではあまり邪魔になりませんが、購入する前にMacBookで開発しました。マシン、それはお金の価値があります、私を信頼してください:)
Tim Specht

0

私はこのスレッドと[その他の]スレッドで提案されたすべてのことを試してみましたが、私のために働いた唯一のことは、プロジェクトのサブバージョンを「無効にする」ことでした。これが厄介な部分です。組み込みの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

次に、本当にバージョン管理を行いたいときは、hostsファイルを解凍し、cmd行svnを使用する必要があります。


/Applications/Xcode.app/Contents/PlugIns/IDESubversion.idepluginフォルダーの名前を別の末尾に変更します。同様のトリックを使用して、Gitプラグインを無効にしました。
ジョンマクファーレン2013年

0

Xcodeのインデックス作成を回避できます。これにより、システムのメモリパフォーマンスが向上しますが、オートコンプリートや定義へのジャンプなどのIDE機能が機能しなくなります。

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

0

インターフェイスビルダー/エディターで.xibファイルを変更しているときにパフォーマンスが遅い場合は、ファイルインスペクターで.xibを探し、自動レイアウト無効にします。.xibを編集してから、最後の手順として、自動レイアウトを再度有効にし、制約を追加または調整します。


0

git機能をオフにすることで、Xcodeが正常に機能するようになりました。



0

私の場合、それはRAM使用量でした。

ここに画像の説明を入力してください

いくつかのChromeタブまたはほとんど使用されていないアプリを強制終了してみてください。


0

XCode 4のコンパイルパフォーマンスを加速するトリックを見つけました。Xcodeで実行またはコンパイルするか、その他の処理を実行すると、開いているアクティブモニターが停止し、Xcodeプロセスを選択してからサンプルプロセスをクリックします。これにより、プロセスが解放され、通常どおりに再度実行され、妥当な時間でアプリをビルドできるようになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.