Xcode 4 - langsame Leistung

128

Ich habe ein Problem damit, dass Xcode 4 sehr langsam auf Benutzerinteraktionen reagiert, z. B. das Bearbeiten von Code, das Scrollen von Bereichen usw. Dies geschieht insbesondere bei größeren Projekten mit vielen Controllern / Ansichtsdateien usw.

Ich habe die Festplatte komplett gelöscht und Snow Leopard und Xcode neulich neu installiert, aber es kam immer wieder zu einer frustrierenden Reaktionszeit (über mehrere Tage), die den Workflow erheblich störte.

Gelegentlich habe ich auch die "abgeleiteten Daten" des Projekts über den Organizer -> Projekte entfernt, was nur geringe Auswirkungen hatte.

Ich frage mich, ob ich irgendetwas tun kann, um die Leistung zu verbessern, außer zunächst eine Maschine mit höherer Geschwindigkeit zu bekommen.

Zu Ihrer Information: Ich verwende ein MacBook mit Intel Core 2 Duo-Prozessoren mit 2 GHz und 4 GB RAM.

Für den Fall, dass wir ein Upgrade durchführen müssen, würde ich auch gerne wissen, ob diese schlechte Leistung von Xcode 4 auf gut ausgestatteten Computern auftritt (was unser Hardware-Upgrade ziemlich sinnlos machen würde, da nur Xcode Leistungsprobleme auf dem MacBook aufweist).

Wenn jemand Vorschläge oder Empfehlungen hat oder uns sogar mitteilen könnte, wie sich eine verbesserte Hardware auf die Leistung von Xcode bei größeren Projektbäumen auswirkt, wäre dies äußerst hilfreich und auch eine wertvolle Ressource für andere Entwickler in einer ähnlichen Position.

Kzrbill
quelle
Ich habe eine ziemlich lange Beschreibung für Xcode 4.2 in diesem Beitrag gemacht: stackoverflow.com/questions/7780663/…
Justin
1
Ich habe bessere Lösungen gefunden als alle hier erläuterten. Ich bin zu AppCode gewechselt. Ja, es waren 99 Dollar, aber es war billiger als der Kauf eines neuen Mac. Ich habe ein MacBook Pro aus dem Jahr 2010. Es hat einen schnelleren Prozessor als jedes andere MacBook Airs, aber hier im Büro können Leute, die diese verwenden, immer noch eine bessere Geschwindigkeit erzielen. Ich habe Lion neu installiert und dann eine Neuinstallation für Mountain Lion durchgeführt, und immer noch kein Glück. Jetzt benutze ich AppCode und bin wieder glücklich.
HotFudgeSunday
1
Eine unglückliche Lüge. AppCode ist noch langsamer als Xcode. Es scheint wie eine Java-App. Es erfordert eine Menge ausgefallener Code-Vervollständigung, automatisches #importieren usw., die Hintergrundprozesse erfordern. In einigen Situationen ist dies möglicherweise besser, aber nicht, um die langsame Leistung von Xcode zu vermeiden.
Gabe Rainbow

Antworten:

161

Wenn Sie die Arbeitsbereichsdatei löschen, wird dies beschleunigt.

Stellen Sie zunächst sicher, dass Xcode nicht geöffnet ist. Suchen Sie nun Ihre Projektdatei. Klicken Sie mit der rechten Maustaste darauf und wählen Sie Show Package Contents.

Geben Sie hier die Bildbeschreibung ein

Als nächstes löschen project.xcworkspace.

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie Xcode und genießen Sie eine schnellere Leistung!

Vielen Dank an: http://meachware.blogspot.com/2011/06/speed-up-xcode-4.html


Bearbeiten: Ich habe mehrere Kommentare dazu erhalten und festgestellt, dass dies bei einigen Projekten zu Problemen führen kann. Stellen Sie sicher, dass Sie eine Sicherungskopie Ihres Projekts haben, bevor Sie diese Schritte ausführen, und vergessen Sie nicht, Ihr Projekt anschließend zu überprüfen und zu testen . Stellen Sie sicher, dass Sie noch alle ausführbaren Dateien und Schemata haben.

sudo rm -rf
quelle
Das Löschen des Arbeitsbereichs hat das Problem behoben, aber ich glaube nicht, dass Sie das Applet wirklich brauchen, heheh
Vincent Bacalso
3
Wow - ich habe mir wegen ständigem Strandballen die Haare ausgerissen und jetzt läuft es wie ein Traum. Danke für den absolut wichtigen Tipp. Es ist erwähnenswert, dass Ihr Fensterlayout vorübergehend zurückgesetzt wird (was offensichtlich sein kann oder nicht), aber es ist ein geringer Preis. Wenn Benutzer die Arbeitsbereichsdatei manuell entfernen möchten, können sie bei gedrückter Ctrl-Taste auf ihre xcodeproj-Datei klicken, "Paketinhalt anzeigen" auswählen und dann die .xcworkspace-Datei löschen oder verschieben.
Erik Asmussen
11
@sudo Unglaublich, aber jetzt habe ich meine Leistungsentschuldigung verloren und kann mir keinen neuen, schnelleren MBP kaufen!?!
Daniel Blezek
Ich habe ähnliche Leistungsprobleme. Eine Sache, die ich im kleinen Statusbereich in der oberen Mitte des Fensters sehe, ist eine Meldung mit der Aufschrift "Indizieren | 0 von 1 Datei verarbeiten" (die Zahlen sind nur Beispiele). Könnte das auch zu der langsamen Leistung beitragen?
Meilen
3
Dies ist ein schlechter Rat - das xcworkspace-Verzeichnis enthält einige der Kerndateien für Ihr Projekt. Bei einem sehr einfachen Projekt fehlen diese Dateien, und es wird in Ordnung sein, daher haben Sie dies wahrscheinlich noch nicht bemerkt. Bei komplexen Projekten - z. B. mit gemeinsam genutzten Exectuables, gemeinsam genutzten Schemata usw. - wird Ihr Projekt beschädigt. Siehe die .gitignore-Frage für Details darüber, welche Dateien in xcworkspace sicher gelöscht werden können - und welche nicht! stackoverflow.com/questions/49478/…
Adam
46

WICHTIGES UPDATE: Pfade für Xcode 6 geändert (Danke für den Kommentar dcc)! Ich habe gerade den alternativen Weg hinzugefügt.


Es gibt noch einen weiteren netten Trick, um Builds zu erstellen, indem Sie eine RAM-Disk mit der folgenden Codezeile erstellen:

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

Dadurch wird ein speicherinternes Image mit einer Größe von ca. 4 GB erstellt. Aber seien Sie vorsichtig, Sie müssen genügend Speicher haben. Natürlich können Sie ein kleineres Bild wie 2 GB erstellen (das wäre 4237927).

Dann weisen Sie Xcode an, abgeleitete Daten dort zu speichern Geben Sie hier die Bildbeschreibung ein

Sie können Xcode nicht anweisen, die iPhone Simulator-Daten direkt dort zu speichern. Sie können jedoch einen Ordner auf der Ramdisk erstellen und anstelle des iPhone Simulator-Verzeichnisses einen symbolischen Link erstellen:

Xcode 6:

cd /Volumes/ramdisk
mkdir CoreSimulator
rm -R ~/Library/Developer/CoreSimulator
ln -s /Volumes/ramdisk/CoreSimulator ~/Library/Developer/CoreSimulator

Ältere Xcode-Versionen:

cd /Volumes/ramdisk
mkdir iPhone\ Simulator
rm -R ~/Library/Application\ Support/iPhone\ Simulator
ln -s /Volumes/ramdisk/iPhone\ Simulator ~/Library/Application\ Support/iPhone\ Simulator

Wenn ich mit diesem Setup für den Simulator baue, ist es in kürzester Zeit betriebsbereit :)

Beachten Sie, dass die RAM-Disk beim Neustart des Computers verschwindet. Daher ist es möglicherweise eine gute Idee, ein Skript oder etwas zu erstellen, das beim Start ausgeführt wird. UND PLATZIEREN SIE KEINE DATEN, DIE SIE BEHALTEN WOLLEN !!!

UPDATE 2013-03-12:

  1. Lesen Sie den Kommentar von Francisco Garcia unten!

  2. Mit meinem neuen MBP (der ein SSD-Laufwerk enthält) brauche ich diese Methode nicht mehr. Xcode läuft wie die Hölle :). Ich hoffe, dies wird nicht als Werbung für das große Obstunternehmen angesehen, sondern nur als Erfahrungsbericht ...

benjamin.ludwig
quelle
2
oh man .. dieser ist wirklich toll. aber WICHTIG: Dadurch werden Ihre Coredata aus dem Simulator gelöscht. Sie verlieren jedes Testergebnis, das Sie bisher erzielt haben. also danke für einen massiv schnelleren Build, aber die Warnung wäre nett gewesen =)
Sebastian Flückiger
2
Wenn Sie dies tun, beachten Sie bitte, dass es eine Sache gibt, die Sie in Ihrem abgeleiteten Datenordner, Ihrer Symboldatei, aufbewahren möchten. Sobald Sie eine App
SystematicFrank
1
@FranciscoGarcia Wenn Sie eine App über den xcode-Organizer durch Archivierung bereitstellen, befinden sich die dSYMs im Archiv. Dies wird außerhalb des abgeleiteten Datenordners gespeichert (zumindest in der aktuellen Version von xcode - 4.6)
Danny Parker
1
@imcaptor Mit Automator können Sie ein Programm erstellen, das ein Skript ausführt. Gehen Sie in Ihren Systemeinstellungen zu Benutzer & Gruppen -> Anmeldeelemente und fügen Sie dieses Programm hinzu. Ich wette, es gibt einen einfacheren Weg, aber dieser funktioniert
benjamin.ludwig
1
Der Pfad ~ / Library / Application \ Support / iPhone \ Simulator scheint nicht mehr korrekt zu sein. Bitte aktualisieren.
Davidcondrey
9

Das Deaktivieren von Live-Problemen in den allgemeinen Einstellungen hat einen deutlichen Unterschied gemacht. Ich habe auch ein Schema ohne aktivierte GDB für Situationen eingerichtet, in denen ich häufig erneut ausgeführt werde (keine GDB beschleunigt den Start erheblich).

greg
quelle
7

Für mich hat Xcode eine enorme Leistungssteigerung erzielt, nachdem es auf 32-Bit-Modus eingestellt wurde (standardmäßig 64). Es ist fast so schnell wie der alte Xcode 3. Sie auf 32 - Bit durch einen Rechtsklick umschalten können die App (in /Developer/Applications/XCode.app ) und Auswahl Get Info und Überprüfung Open in 32-Bit - Modus .

Gyozo Kudor
quelle
Hat für mich auf meinem MBP 2.2Ghz i7 am 10.6.8 keinen Unterschied gemacht. Welchen Computer / welches Betriebssystem haben Sie?
ettore
Ich habe einen Mac Mini mit 2,26 GHz Intel Core 2 Duo, 10.6.8, 2 GB Speicher.
Gyozo Kudor
7

Xcode 4.2, 4.3:

Hauptprobleme mit dem Datei-Indexer (derselbe Code, der Spotlight ausführt, der seit Jahren fehlerhaft ist? Wahrscheinlich).

Deaktivieren Sie alle nicht wesentlichen Elemente, die zum "Ansehen" von Dateien erforderlich sind:

  1. Schnelle Hilfe (Hinweis: Klicken Sie niemals auf die Registerkarte QH! Selbst wenn Sie den Assistenten ausblenden, wird der Code ausgeführt! Wechseln Sie zu einer anderen Registerkarte, bevor Sie zu einer neuen Datei wechseln ...)
  2. SCM-Verwaltung (SVN, Git usw. - Die Git-Unterstützung von Xcode ist immer noch ein wenig fehlerhaft (kann Projekte beschädigen), und die SVN-Unterstützung wurde eingestellt, sodass Sie sie sowieso nicht verwenden sollten!)
  3. Versuchen Sie, Ihren Arbeitsbereichsordner zu löschen (gemäß der akzeptierten Antwort), aber nur, wenn er auf der Festplatte groß ist
  4. ... alles andere, was Sie zum Status einzelner Dateien finden können

Xcode 4.4, 4.5:

Diese Versionen haben ein schwerwiegendes Mem-Leck, einen defekten Datei-Indexer (aber besser als 4.2 und 4.3) und möglicherweise ein Problem mit privaten Auslagerungsdateien.

Durch Deaktivieren / Aktivieren des Swap-Speicherplatzes ( Deaktivieren oder Aktivieren des Swapings in Mac OS X ) und Verwenden normaler Festplatten auf mehreren Computern sowie durch Ausführen von Experimenten auf Computern mit 2 GB RAM bis zu 16 GB RAM fand ich diesen Xcode scheint einen eigenen Swap-Space zu betreiben, unabhängig vom OS X-Swap (!).

(Dies könnte ein Fehler sein - vielleicht gibt es eine zusätzliche Form des OS X-Austauschs, von der ich nichts weiß -, aber die Systemaustauschdateien wurden nicht größer oder kleiner, während der Speicherplatz auf einigen Computern um Gigabyte auf und ab sprang.)

Beobachtete:

  1. Xcode 4.4 / 4.5 beansprucht nach dem Zufallsprinzip den gesamten Arbeitsspeicher Ihres Systems (10 GB für ein kleines Projekt), sodass der Rest des Systems zum Stillstand kommt und auf den Austausch der Festplatte wartet

    1. SCHLECHTER: Auf Macbooks mit SSDs wissen Sie nicht, dass dies passiert ist
    2. Das Schlimmste: ... obwohl es möglicherweise Ihre Festplatte beschädigt (SSDs mögen es nicht, Schreibvorgänge zu verprügeln)
  2. Xcode blockiert den Zugriff auf die Festplatte, damit es seine (defekte) interne Dateiindizierung durchführen kann. Wenn der Systemspeicher knapp wird und OS X einen Austausch durchführen muss ... bleibt es hängen und wartet darauf, dass Xcode Dateien indiziert ... und Xcode benötigt mehr Speicher, während es wartet ... und: BOOM! Auf kleineren Systemen hängt OS X schließlich

  3. Xcode benötigt keinen OS X-Swap-Space

Der letzte ist sehr interessant. Wenn Sie über viel Speicher verfügen (z. B. 16 GB), deaktivieren Sie den Swap-Speicher dauerhaft. Xcode läuft schneller, da OS X Lion einige Fehler in der Mem-Verwaltung aufweist, bei denen es auch dann ausgetauscht wird , wenn dies nicht erforderlich ist .

Wenn xcode plötzlich langsamer wird, wird es intern ausgetauscht. An diesem Punkt können Sie es einfach beenden und neu starten.

(Wenn Sie eine SSD haben, können Sie nur feststellen, ob der Austausch begonnen hat, indem Sie darauf warten, dass sie "langsamer" wird. Andernfalls wissen Sie, sobald Sie den HD-Thrash hören: Es gibt keine System-Austauschdatei mehr einzig mögliche Ursache ist Xcode)

Sie können Swap sicher deaktivieren, selbst wenn Sie über 2 GB RAM verfügen (ich hatte nur einen OS X-Absturz pro Monat, als ich dies versuchte, habe es ein Jahr lang auf diese Weise ausgeführt), aber es verhindert, dass Sie High-End-Video- / Grafikarbeiten mit Dateien ausführen das braucht Multi-Gigabyte, nur um zu laufen. Probieren Sie es einfach ein paar Wochen lang aus und sehen Sie, was passiert.

Aber ... Xcode immer dann neu zu starten, wenn es langsamer wird, wirkt Wunder. Auf Computern mit weniger RAM scheint die private Auslagerungsdatei von Xcode beim Schließen SOFORT gelöscht zu werden (auf Computern mit viel RAM scheint dies nicht der Fall zu sein).

Adam
quelle
4

Keine dieser Antworten hat die Leistung in meinem Fall wirklich verbessert (im Laufe der Zeit wurde Xcode 4.1 kaum mehr verwendbar, nur das gelegentliche Beenden hat geholfen).

Ich habe jedoch gerade herausgefunden, dass es schnell zu bleiben scheint, wenn ich alle meine Dokumente schließe (Steuerbefehl-W). Xcode speichert automatisch alle Dokumente, auf die Sie klicken, irgendwie im Speicher, und Sie können mit dem Steuerbefehl links / rechts zwischen ihnen navigieren. Wenn Sie versehentlich zu viele öffnen (insbesondere IB-Fenster), wird es angehalten. Nur ab und zu alle geöffneten Dokumente zu schließen, scheint dies zu erleichtern, ohne dass ein vollständiger Neustart erforderlich ist.

Dick
quelle
2

Jeder, bei dem diese Probleme auftreten, sollte Xcode 4.1 unter Mac OS X Lion ausprobieren. Ich bin überrascht, wie viel schneller und reaktionsschneller es auf derselben Hardware ist (Macbook Pro 2,66 GHz Core 2 Duo mit 4 GB RAM hier).

Ich nehme an, sie haben mit dieser Version Unmengen von Leistungsfehlern behoben.

Ricardo Sanchez-Saez
quelle
2
Immer noch langsam für mich bei ähnlichem Setup. (Xcode 4.1 und Mac OSX Lion auf MacBook 2,26 GHz Intel Core 2 Duo, 2 GB RAM)
Andrei
1

Starten Sie Instruments mit der Zeitprofilvorlage und hängen Sie sie an den laufenden Xcode an (oder an clang, llvm usw., wenn Ihr Problem während der Erstellung auftritt). Sie sollten das Problem ziemlich schnell erkennen können. Ich habe auf verschiedenen Maschinen sehr unterschiedliche Ursachen gesehen. Die Versionskontrolle ist oft ein Schuldiger.

quellish
quelle
1

Ich stehe vor den gleichen Problemen. Sie wurden teilweise behoben, da die Beta-Builds noch bestehen. Es scheint, dass Xcode intern ein oder mehrere Lecks hat, die Ihren Speicher schweben lassen. Sie können diese raffinierte "Funktion" sehr gut sehen, wenn Sie den integrierten Interface-Builder verwenden. Zwei mögliche Lösungen unter dem Beten und Füllen von Fehlerberichten an Apple:

  1. Verwenden Sie keinen internen Builder, sondern starten Sie stattdessen die externe Anwendung.
  2. Beenden Sie Xcode von Zeit zu Zeit, um den durchgesickerten Speicher freizugeben.
Tim Specht
quelle
Ich habe einen brandneuen iMac Mid 2011, 3,1 i5, 12 GB RAM + 1 GB Grafikspeicher, die Probleme stören mich hier nicht sehr, aber bevor ich ihn gekauft habe, habe ich ihn auf einem MacBook entwickelt Maschine, es ist das Geld wert, vertrau mir :)
Tim Specht
0

Ich habe fast alles versucht, was in diesem Thread und [zahlreichen] anderen vorgeschlagen wurde, und das einzige, was für mich funktioniert hat, war, die Subversion für das Projekt zu "deaktivieren". Hier ist der beschissene Teil - die einzige Möglichkeit, das integrierte SVN-Plugin zu "deaktivieren", bestand darin, meine Datei / etc / hosts mit einer gefälschten IP-Adresse zu versehen, wodurch der gesamte SVN-Zugriff fehlschlug.

Ich habe versucht, das IDESubversion.ideplugin in / Developer / Library / Xcode / PrivatePlugIns zu entfernen / umzubenennen, aber Xcode 4.2.1 kotzt und weigert sich zu starten.

Ich habe versucht, meine SVN-Repositorys bei jedem Neustart von Xcode aus Xcode zu entfernen, aber Xcode stürzt innerhalb weniger Minuten ab.

Ich habe versucht, "Remote Status" über Datei-> Quellcodeverwaltung-> Remote-Status ausblenden auszuschalten (habe nichts für mich getan).

Nachdem ich meinen SVN-Hostnamen in meiner Hosts-Datei auf 1.2.3.4 festgelegt habe, funktioniert Xcode hervorragend und zeigt den SBBOD nicht fast jedes Mal an, wenn ich zwischen Dateien wechsle.

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

Wenn ich dann wirklich die Versionskontrolle durchführen möchte, muss ich die Hosts-Datei freigeben und cmd line svn verwenden.

DustinB
quelle
Versuchen Sie, den Ordner /Applications/Xcode.app/Contents/PlugIns/IDESubversion.ideplugin in einen Ordner mit einer anderen Endung umzubenennen. Ich habe einen ähnlichen Trick verwendet, um das Git-Plugin zu deaktivieren.
John McFarlane
0

Sie können die Indizierung von Xcode vermeiden. Dies verbessert die Speicherleistung Ihres Systems, verhindert jedoch auch, dass IDE-Funktionen wie die automatische Vervollständigung und das Springen zu Definitionen funktionieren.

$ defaults write com.apple.dt.XCode IDEIndexDisable 1
Davidcondrey
quelle
0

Wenn Sie beim Ändern einer .xib-Datei mit dem Interface Builder / Editor eine langsame Leistung haben, gehen Sie unter Dateiinspektor zur .xib und deaktivieren Sie das automatische Layout . Nehmen Sie Ihre Änderungen an der .xib vor und aktivieren Sie als letzten Schritt das automatische Layout wieder und fügen Sie Einschränkungen hinzu oder passen Sie sie an.

Sparky
quelle
0

Ich habe endlich meinen Xcode normal funktionieren lassen, indem ich die Git-Funktion ausgeschaltet habe.

Emmy
quelle
0

In meinem Fall war es die RAM-Nutzung.

Geben Sie hier die Bildbeschreibung ein

Versuchen Sie, einige Chrome-Tabs oder selten verwendete Apps zu löschen.

Maciek Czarnik
quelle
0

Ich habe einen Trick gefunden, um die Kompilierungsleistung von XCode 4 zu beschleunigen: Wenn Sie Xcode ausführen oder kompilieren oder eine andere Verarbeitung ausführen und der aktive Monitor blockiert, wählen Sie den Xcode-Prozess aus und klicken Sie auf den Beispielprozess. Dadurch bleibt der Prozess hängen und wird wie gewohnt erneut ausgeführt, sodass die App in angemessener Zeit erstellt werden kann.

William Pagnon
quelle