Xcode 4 - performances lentes

128

J'ai un problème avec Xcode 4 qui répond vraiment très lentement aux interactions des utilisateurs, par exemple l'édition de code, les zones de défilement, etc. Cela se produit particulièrement avec des projets à plus grande échelle avec de nombreux contrôleurs / fichiers de vue, etc.

J'ai complètement essuyé le disque dur et réinstallé Snow Leopard et Xcode l'autre semaine, mais le temps de réponse est à nouveau frustrant (sur plusieurs jours) perturbant considérablement le flux de travail.

J'ai aussi parfois supprimé les "données dérivées" du projet via l'Organisateur -> Projets et cela n'a eu que peu d'effet.

Je me demande s'il y a quelque chose que je puisse faire pour améliorer les performances autre que d'obtenir une machine plus performante en premier lieu.

Pour info, j'utilise un MacBook avec des processeurs Intel Core 2 Duo à 2 GHz et 4 Go de RAM.

Au cas où nous aurions besoin de mettre à niveau, j'aimerais également savoir si les gens rencontrent ces mauvaises performances de Xcode 4 sur des machines bien spécifiées (ce qui rendrait notre mise à niveau matérielle plutôt inutile car c'est seulement Xcode qui a des problèmes de performances sur le MacBook).

Si quelqu'un a des suggestions ou des recommandations ou pourrait même nous faire savoir comment l'amélioration du matériel affecte les performances de Xcode sur des arborescences de projets plus grandes, cela serait extrêmement utile et également une ressource précieuse pour d'autres développeurs dans une position similaire.

Kzrbill
la source
J'ai fait un article assez long pour Xcode 4.2 dans cet article: stackoverflow.com/questions/7780663/…
justin
1
J'ai trouvé de meilleures solutions que toutes celles expliquées ici. Je suis passé à AppCode. Oui, c'était 99 $, mais c'était moins cher que d'acheter un nouveau Mac. J'ai un MacBook Pro de 2010. Il a un processeur plus rapide que n'importe lequel des MacBook Air, mais ici, au bureau, les gens qui les utilisent peuvent toujours obtenir une meilleure vitesse. J'ai réinstallé Lion, puis fait une installation propre pour Mountain Lion, et toujours pas de chance. Alors maintenant, j'utilise AppCode et je suis à nouveau heureux.
HotFudgeSunday
1
Un mensonge malheureux. AppCode est encore plus lent que Xcode. Cela ressemble à une application Java. Il contient beaucoup de compléments de code sophistiqués, d'auto #importation, etc. qui nécessitent des processus en arrière-plan. Cela pourrait être mieux dans certaines situations, mais pas pour éviter les performances lentes de Xcode.
Gabe Rainbow

Réponses:

161

Si vous purgez le fichier de l'espace de travail, cela permet de l'accélérer.

Tout d'abord, assurez-vous que Xcode n'est pas ouvert. Recherchez maintenant votre fichier de projet. Cliquez dessus avec le bouton droit de la souris et sélectionnez Show Package Contents.

entrez la description de l'image ici

Ensuite, supprimez project.xcworkspace.

entrez la description de l'image ici

Ouvrez Xcode et profitez de performances plus rapides!

Merci à: http://meachware.blogspot.com/2011/06/speed-up-xcode-4.html


Edit: J'ai reçu plusieurs commentaires à ce sujet, notant que pour certains projets, cela pourrait poser des problèmes. Assurez-vous d'avoir une sauvegarde de votre projet avant d'effectuer ces étapes, et n'oubliez pas de vérifier et de tester votre projet par la suite . Assurez-vous que vous avez toujours tous vos exécutables et schémas.

sudo rm -rf
la source
la suppression de l'espace de travail a aidé à résoudre le problème, mais je ne pense pas que vous ayez vraiment besoin d'obtenir cette applet heheh
Vincent Bacalso
3
Wow - Je m'arrachais les cheveux à cause du ballon de plage constant, et maintenant ça marche comme un rêve. Merci pour le conseil absolument indispensable. Il convient de mentionner que cela réinitialise temporairement la disposition de votre fenêtre (ce qui peut être évident ou non), mais c'est un petit prix à payer. De plus, si les utilisateurs souhaitent supprimer manuellement le fichier de l'espace de travail, ils peuvent faire un contrôle-clic sur leur fichier xcodeproj, choisir «afficher le contenu du package», puis supprimer ou déplacer le fichier .xcworkspace.
Erik Asmussen
11
@sudo Incroyable, mais maintenant j'ai perdu mon excuse de performance et je ne peux pas m'acheter un nouveau MBP plus rapide!?!
Daniel Blezek
J'ai des problèmes de performances similaires. Une chose que je vois dans le petit volet d'état en haut au milieu de la fenêtre est un message qui dit "Indexation | traité 0 sur 1 fichier" (les nombres ne sont que des exemples). Cela pourrait-il également ajouter à la lenteur des performances?
milesmeow
3
C'est un mauvais conseil - le répertoire xcworkspace contient certains des fichiers principaux de votre projet. Sur un projet très simple, ces fichiers seront manquants, et tout ira bien, donc vous ne vous en êtes probablement pas encore rendu compte. Sur des projets complexes - par exemple avec des exécutables partagés, des schémas partagés, etc. - vous corromprez votre projet. cf la question .gitignore pour plus de détails sur QUELS fichiers dans xcworkspace peuvent être supprimés en toute sécurité - et lesquels ne le sont pas! stackoverflow.com/questions/49478/…
Adam
46

MISE À JOUR IMPORTANTE: Les chemins ont changé pour Xcode 6 (Merci pour le commentaire dcc)! Je viens d'ajouter la manière alternative.


Il existe une autre astuce intéressante pour fixer les builds en créant un disque RAM avec la ligne de code suivante:

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

Cela crée une image disque en mémoire d'une taille d'environ 4 Go. Mais attention, vous devez avoir suffisamment de mémoire. Bien sûr, vous pouvez créer une image plus petite comme 2 Go (ce serait 4237927).

Ensuite, vous dites à Xcode d'y stocker les données dérivées entrez la description de l'image ici

Vous ne pouvez pas dire à Xcode d'y stocker directement les données de l'iPhone Simulator, mais vous pouvez créer un dossier sur le disque virtuel et créer un lien symbolique au lieu du répertoire iPhone Simulator en procédant comme suit:

Xcode 6:

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

Anciennes versions de 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

Si je construis pour le simulateur avec cette configuration, il est opérationnel en un rien de temps :)

Sachez que le disque RAM disparaîtra lorsque vous redémarrerez votre machine, il peut donc être judicieux de créer un script ou quelque chose qui s'exécute au démarrage. ET NE PLACEZ PAS LES DONNÉES QUE VOUS VOULEZ CONSERVER !!!

MISE À JOUR 12/03/2013:

  1. Lisez le commentaire de Francisco Garcia ci-dessous!

  2. Avec mon nouveau MBP (contenant un disque SSD), je n'ai plus besoin de cette méthode. Xcode fonctionne comme un enfer :). J'espère que ce n'est pas considéré comme une publicité pour le gros fruit, c'est juste un rapport d'expérience ...

benjamin.ludwig
la source
2
oh mec .. celui-ci est vraiment génial. mais IMPORTANT: cela effacera vos données de base du simulateur ... vous perdrez tous les résultats de test que vous avez effectués jusqu'à présent. alors merci pour une construction massivement plus rapide, mais l'avertissement aurait été bien =)
Sebastian Flückiger
2
pour quiconque fait cela, sachez qu'il y a une chose que vous voulez conserver dans votre dossier de données dérivées, votre fichier de symboles. Une fois que vous déployez une application, vous voudrez conserver dans un endroit sûr son fichier de symboles au cas où vous voudriez déboguer avec un rapport de plantage
SystematicFrank
1
@FranciscoGarcia Si vous déployez une application via l'organisateur xcode par archivage, les dSYM seront dans l'archive. Ceci est stocké en dehors du dossier de données dérivées (au moins c'est sur la version actuelle de xcode - 4.6)
Danny Parker
1
@imcaptor Vous pouvez utiliser Automator pour créer un programme qui exécute un script. Dans vos préférences système, allez dans Utilisateurs et groupes -> Éléments de connexion et ajoutez ce programme. Je parie qu'il existe un moyen plus simple, mais celui-ci fonctionne
benjamin.ludwig
1
Le chemin ~ / Library / Application \ Support / iPhone \ Simulator ne semble plus être correct. Veuillez mettre à jour.
davidcondrey
9

La désactivation des problèmes en direct dans les préférences générales a fait une nette différence. J'ai également configuré un schéma sans gdb activé pour les situations où je réexécute fréquemment (aucun gdb n'accélère un peu le lancement).

Greg
la source
7

Pour moi, Xcode a obtenu une énorme augmentation des performances après l'avoir configuré pour fonctionner en mode 32 bits (il était de 64 par défaut). Il est presque aussi rapide que l'ancien Xcode 3. Vous pouvez passer en 32 bits en cliquant avec le bouton droit sur l'application (dans /Developer/Applications/XCode.app ) et en sélectionnant Obtenir des informations et en cochant Ouvrir en mode 32 bits .

gyozo kudor
la source
Cela n'a fait aucune différence pour moi sur mon MBP 2.2Ghz i7 sur 10.6.8. Quel ordinateur / système d'exploitation avez-vous?
ettore
J'ai un Mac Mini avec 2,26 Ghz Intel Core 2 Duo, 10.6.8, 2 Go de mémoire.
gyozo kudor
7

Xcode 4.2, 4.3:

Problèmes majeurs avec l'indexeur de fichiers (même code qui exécute Spotlight, qui a été bogué pendant des années? Probablement).

Désactivez tout ce qui n'est pas essentiel lié à la "surveillance" des fichiers:

  1. Aide rapide (NB: ne cliquez jamais sur l'onglet QH! Même le fait de cacher l'assistant entraîne toujours l'exécution du code! Passez à un autre onglet avant de passer à un nouveau fichier ...)
  2. Gestion SCM (SVN, Git, etc. - Le support git de Xcode est encore un peu bogué (peut corrompre les projets), et ils ont abandonné le support SVN, vous ne devriez donc pas l'utiliser de toute façon!)
  3. essayez de supprimer votre dossier d'espace de travail (selon la réponse acceptée), mais uniquement s'il est volumineux sur le disque
  4. ... tout ce que vous pouvez trouver concernant l'état des fichiers individuels

Xcode 4.4, 4.5:

Ces versions ont une fuite importante de mémoire, un indexeur de fichiers cassé (mais mieux que 4.2 et 4.3), et peut-être un problème de fichier d'échange privé.

Finalement, en désactivant / activant l'espace d'échange ( comment désactiver ou activer l'échange sous mac os x ), et en utilisant des disques durs normaux sur plusieurs machines, et en exécutant des expériences sur des machines avec 2 Go de RAM jusqu'à 16 Go de RAM, j'ai trouvé que Xcode semble exécuter son propre espace d'échange, indépendant du swap OS X (!).

(cela pourrait être une erreur - il existe peut-être une forme supplémentaire d'échange d'OS X que je ne connais pas - mais les fichiers d'échange système ne sont pas devenus plus gros ou plus petits, tandis que l'espace disque a bondi de gigaoctets de haut en bas sur certaines machines)

Observé:

  1. Xcode 4.4 / 4.5 prendra aléatoirement toute la RAM de votre système (10 de Go pour un petit projet) afin que le reste du système s'arrête, coincé en attendant l'échange de disque

    1. Pire: sur les macbooks avec SSD, vous ne saurez pas que cela s'est produit
    2. PIRE: ... même si cela peut endommager votre disque dur (les SSD n'aiment pas écraser les écritures)
  2. Xcode va monopoliser l'accès au disque dur afin de pouvoir effectuer son indexation de fichier interne (cassée). Lorsque la mémoire système est faible et que OS X doit effectuer un échange ... il reste bloqué en attendant que Xcode indexe les fichiers ... et Xcode prend plus de mémoire pendant qu'il attend ... et: BOOM! sur les systèmes plus petits, OS X se bloque finalement

  3. Xcode n'a pas besoin d'espace de swap OS X

Le dernier est très intéressant. Si vous disposez de beaucoup de mémoire (par exemple 16 Go), essayez de désactiver définitivement l'espace d'échange. Xcode s'exécute plus rapidement, car OS X Lion a quelques bogues dans la gestion des mémoires où il échange même lorsqu'il n'en a pas besoin .

Si xcode ralentit soudainement, il échange en interne, à quel point vous pouvez simplement le tuer et le redémarrer.

(si vous avez un SSD, le seul moyen de savoir si son échange a commencé est d'attendre qu'il "ralentisse". Sinon, vous savez dès que vous entendez le thrash HD: il n'y a plus de fichier d'échange système, donc le la seule cause possible est Xcode)

Vous pouvez désactiver le swap en toute sécurité même si vous avez 2 Go de RAM (je n'ai eu qu'un seul crash OS X par mois lorsque j'ai essayé cela, je l'ai exécuté de cette façon pendant un an), mais cela vous empêchera de faire du travail vidéo / graphique haut de gamme avec des fichiers qui ont besoin de plusieurs gigaoctets pour fonctionner. N'hésitez pas à l'essayer pendant quelques semaines et voyez ce qui se passe.

Mais ... redémarrer Xcode chaque fois qu'il ralentit fait des merveilles. Sur les machines avec moins de RAM, le fichier d'échange privé de Xcode semble être IMMÉDIATEMENT supprimé lorsque vous fermez (cela ne semble pas se produire sur les machines avec beaucoup de RAM)

Adam
la source
4

Aucune de ces réponses n'a vraiment amélioré les performances dans mon cas (avec le temps, Xcode 4.1 est devenu à peine utilisable, le quitter de temps en temps a aidé).

Cependant, je viens de découvrir que si je continue à fermer tous mes documents (contrôle-commande-W), cela semble rester rapide. Xcode conserve automatiquement tous les documents sur lesquels vous cliquez en mémoire d'une manière ou d'une autre, et vous pouvez naviguer entre eux avec la flèche gauche / droite de la commande de contrôle. Si vous en ouvrez accidentellement trop (notamment les fenêtres IB), il s'arrête. La simple fermeture de tous les documents ouverts de temps en temps semble atténuer ce problème sans qu'il soit nécessaire de redémarrer complètement.

Queue
la source
2

Tous ceux qui rencontrent ces problèmes devraient essayer Xcode 4.1 sur Mac OS X Lion. Je suis surpris de voir à quel point il est plus rapide et réactif sur le même matériel (Macbook Pro 2,66 GHz Core 2 Duo avec 4 Go de RAM ici).

Je suppose qu'ils ont corrigé des tonnes de bugs de performances avec cette version.

Ricardo Sanchez-Saez
la source
2
Encore lent pour moi sur une configuration similaire. (Xcode 4.1 et Mac OSX Lion sur MacBook 2,26 GHz Intel Core 2 Duo, 2 Go de RAM)
Andrei
1

Lancez les Instruments avec le modèle de profil temporel et attachez-le au Xcode en cours d'exécution (ou clang, llvm, etc. si votre problème se situe pendant les builds). Vous devriez être en mesure de voir le problème assez rapidement. J'ai vu des causes très différentes sur différentes machines. Le contrôle de version est souvent un coupable.

apaiser
la source
1

Je suis confronté aux mêmes problèmes. Ils ont été en partie corrigés car les versions bêta sont toujours persistantes. Il semble que Xcode ait en interne une ou plusieurs fuites qui flottent dans votre mémoire. Vous pouvez très bien regarder cette "fonctionnalité" astucieuse lorsque vous utilisez l'Interface-Builder intégré. Deux solutions possibles sous prier et remplir des rapports de bogues à Apple:

  1. N'utilisez pas de générateur interne, lancez plutôt l'application externe.
  2. Quittez Xcode de temps en temps, cela devrait libérer la mémoire qui a fui.
Tim Specht
la source
J'ai un tout nouvel iMac mi-2011, 3,1 i5, 12 Go de RAM + 1 Go de mémoire graphique, les problèmes ne me dérangent pas beaucoup ici, mais avant de l'acheter, je l'ai développé sur un MacBook, il suffit de travailler machine, ça vaut l'argent, croyez-moi :)
Tim Specht
0

J'ai essayé à peu près tout ce qui a été suggéré dans ce fil et [de nombreux] autres et la seule chose qui a fonctionné pour moi était de "désactiver" la subversion pour le projet. Voici la partie merdique - la SEULE façon dont je pouvais "désactiver" le plugin SVN intégré était de fouiller mon fichier / etc / hosts avec une fausse adresse IP, provoquant ainsi l'échec de tous les accès SVN.

J'ai essayé de supprimer / renommer IDESubversion.ideplugin dans / Developer / Library / Xcode / PrivatePlugIns, mais Xcode 4.2.1 vomit et refuse de démarrer.

J'ai essayé de supprimer mes référentiels SVN de Xcode à chaque fois que je redémarre Xcode, mais Xcode plante en quelques minutes.

J'ai essayé de désactiver "Remote Status" via File-> Source Control-> Hide Remote Status (n'a rien fait pour moi).

Maintenant que j'ai défini mon nom d'hôte SVN sur 1.2.3.4 dans mon fichier hosts, Xcode fonctionne très bien et n'affiche pas le SBBOD presque chaque fois que je passe d'un fichier à l'autre.

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

Ensuite, quand je veux vraiment faire le contrôle de version, je dois décompresser le fichier hosts et utiliser la ligne cmd svn.

DustinB
la source
Essayez de renommer le dossier, /Applications/Xcode.app/Contents/PlugIns/IDESubversion.ideplugin, en quelque chose avec une fin différente. J'ai utilisé une astuce similaire pour désactiver le plugin Git.
John McFarlane
0

Vous pouvez éviter d'indexer Xcode. Cela améliorera les performances de la mémoire de votre système mais empêchera également les fonctionnalités IDE telles que la saisie semi-automatique et le passage aux définitions de fonctionner.

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

Si vous avez des performances lentes lors de la modification d'un fichier .xib avec le générateur / éditeur d'interface, allez sous Inspecteur de fichiers pour le .xib et désactivez la mise en page automatique . Apportez vos modifications au .xib, puis comme étape finale, réactivez la mise en page automatique et ajoutez ou ajustez les contraintes.

Sparky
la source
0

J'ai finalement fait fonctionner mon Xcode normalement en désactivant la fonction git.

Emmy
la source
0

Dans mon cas, c'était l'utilisation de la RAM.

entrez la description de l'image ici

Essayez de supprimer quelques onglets Chrome ou des applications rarement utilisées.

Maciek Czarnik
la source
0

J'ai trouvé une astuce pour accélérer les performances de compilation de XCode 4: lorsque vous exécutez, compilez ou effectuez tout autre traitement dans Xcode et qu'il bloque le moniteur actif ouvert, sélectionnez le processus Xcode, puis cliquez sur l'exemple de processus. Cela va décoller le processus et le redémarrer normalement, ce qui permet de créer une application dans un délai raisonnable.

William Pagnon
la source