web-dev-qa-db-ja.com

Xcode 4-パフォーマンスの低下

Xcode 4の問題があります。ユーザーインタラクションに対する応答が非常に遅くなります。コードの編集、領域のスクロールなど。これは特に、多くのコントローラー/ビューファイルなどを含む大規模プロジェクトで発生します。

先週、ハードディスクを完全に消去し、Snow LeopardとXcodeを再インストールしましたが、着実に(数日にわたって)イライラするような応答時間になり、ワークフローが大幅に中断しました。

また、オーガナイザー->プロジェクトを使用して、プロジェクトの「派生データ」を削除することもありましたが、ほとんど効果がありませんでした。

私は、最初のインスタンスでより高いスペックのマシンを取得する以外に、パフォーマンスを改善するためにできることがあるかどうか疑問に思っています。

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

アップグレードが必要な場合は、よくスペックされたマシンでXcode 4のパフォーマンスの低下が発生しているかどうかも知りたいと思います(MacBookでパフォーマンスの問題が発生するのはXcodeだけなので、ハードウェアのアップグレードは意味がありません)。

誰かが提案や推奨事項を持っているか、ハードウェアの改善がより大きなプロジェクトツリーでのXcodeのパフォーマンスにどのように影響するかを教えてくれれば、それは非常に役立ち、同様の立場の他の開発者にとっても貴重なリソースになります。

128
Kzrbill

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

まず、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


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

161
sudo rm -rf

重要な更新: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 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. 以下のフランシスコガルシアからのコメントを読んでください!

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

46
benjamin.ludwig

一般設定でライブの問題を無効にすると、明確な違いが生じます。また、頻繁に再実行している状況ではgdbを有効にせずにスキームを設定します(gdbが起動をかなり高速化することはありません)。

9
greg

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(小さなプロジェクトの場合は数十GB))をランダムに取得するため、システムの残りの部分はディスクスワッピングの待機中に停止します。

    1. さらに悪いことに、SSDを搭載したMacbookでは、これが起こったことを知ることはできません。
    2. 最悪:...ハードディスクに損傷を与えている可能性があります(SSDは書き込みをスラッシングすることを好みません)
  2. Xcodeはハードディスクへのアクセスを独占するため、その(破損した)内部ファイルインデックスを作成できます。システムメモリが少なくなり、OS Xがスワッピングを行う必要がある場合... Xcodeがファイルのインデックスを作成するのを待ってスタックします...そしてXcodeは待機中により多くのメモリを使用します...そしてBOOM!小規模なシステムでは、OS Xが最終的にハングします

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

最後のものは非常に興味深いものです。大量のメモリ(16 GBなど)がある場合は、スワップスペースを完全に無効にしてみてください。 Xcodeの実行速度は速くなります。OSX Lionは、必要のない場合でもスワップするメモリ管理にバグがあるためです

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

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

2GB RAM(これを試したときに1か月に1回だけOS Xがクラッシュし、1年間このように実行された)があったとしても、スワップを安全に無効にすることができます。ハイエンドのビデオ/グラフィックスは、実行するために数ギガバイトを必要とするファイルで動作します。数週間試してみて、何が起こるかを見てください。

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

7
Adam

これが誰かに役立つかどうかはわかりませんが、私にとっては、XCodeを32ビットモードで実行するように設定するとパフォーマンスが大幅に向上しました(デフォルトでは64でした)。古いxcode 3とほぼ同じ速度です。アプリを右クリックして(/ Developer/Applications/XCode.app)、Get Infoを選択すると、32ビットに切り替えることができます。 =およびチェック2ビットモードで開く

7
gyozo kudor

私の場合、これらの応答はどれも実際にパフォーマンスを改善しませんでした(やがてXcode 4.1はほとんど使用できなくなり、現在は終了してから助けられました)。

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

4
Dick

@lukaszによる次の投稿、特に彼の回答の項目#8(閉じたユーティリティパネルとクイックヘルプペイン)

Xcode 4は非常に遅くなり、ハードドライブを停止します

2
kris

これらの問題が発生した場合は、Mac OS X LionでXcode 4.1を試してください。同じハードウェア上でmuchがより高速で応答性に優れていることに驚かされます(Macbook Pro 2.66 GHz Core 2 Duo with 4GB of RAM here)。

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

時間プロファイルテンプレートでInstrumentsを起動し、実行中のXcode(またはビルド中に問題がある場合はclang、llvmなど)に添付します。問題をすぐに確認できるはずです。私は、マシンごとに非常に異なる原因を見てきました。バージョン管理はしばしば犯人です。

1
quellish

私は同じ問題に直面しています、ベータビルド以来部分的に修正されましたが、まだ永続的です。 Xcodeには、メモリを浮遊させる1つ(またはそれ以上)のリークが内部で発生したようです。統合されたInterface-Builderを使用すると、この気の利いた「機能」を非常によく見ることができます。 Appleへのバグレポートの祈りと記入の下にある2つの可能な解決策:

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

申し訳ありませんが、これ以上の解決策はないと思います。..:/

1
Tim Specht

Git機能をオフにすることで、ついにxcodeが正常に動作するようになりました。

0
Emmy

XCode 4のコンパイルパフォーマンスを高速化するトリックを見つけました。

Xcodeで実行またはコンパイルまたはその他の処理を実行し、アクティブモニターを失速させ、xcodeプロセスを選択してから、サンプルプロセスをクリックします。これにより、プロセスが正常に停止し、通常どおりに再実行されるため、妥当な時間でアプリをビルドできます。少なくともこれは私のために動作します。

意志

0
william pagnon

このスレッドや他の[多くの]スレッドで提案されたすべてのことを試しましたが、私のために働いた唯一のことは、プロジェクトのSubversionを「無効にする」ことでした。ここに安っぽい部分があります-ビルトインSVNプラグインを「無効化」できる唯一の方法は、偽のIPアドレスで/ etc/hostsファイルをフリギングすることで、事実上すべてのSVNアクセスが失敗します。

/ Developer/Library/Xcode/PrivatePlugInsにあるIDESubversion.idepluginを削除/名前変更しようとしましたが、Xcode 4.2.1が起動して拒否します。

Xcodeを再起動するたびにSVcodeリポジトリをXcodeから削除しようとしましたが、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 line svnを使用する必要があります。

0
DustinB

私の場合は、RAM使用法でした。

enter image description here

少数のChromeタブ、またはめったに使用されないアプリを殺すようにしてください。これは役立つはずです!

0
Maciek Czarnik

ここで多くの良い提案がありました。ここで説明するようにスナップショットを無効にすることで問題を解決しました。

Xcode 5でのストーリーボードの編集は非常に遅い

0
np0x

インターフェイスビルダー/エディターで.xibファイルを変更しているときにパフォーマンスが低下する場合は、.xibの[ファイルインスペクター]およびdisable auto-layoutに移動します。 .xibを編集し、最後の手順として、自動レイアウトを再度有効にして、制約を追加または調整します。

0
Sparky

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

$ defaults write com.Apple.dt.XCode IDEIndexDisable 1
0
davidcondrey