71 votes

Comment réduire le temps de construire / d'accélérer les temps de compilation dans XCode?

Quelles stratégies peuvent être utilisées en général pour diminuer les temps de construire pour tout projet XCode? Je suis surtout intéressé par XCode stratégies spécifiques.

Je fais de développement iPhone en utilisant XCode, et mon projet est lentement et prennent de l'ampleur. Je trouve la compilation / lien phases commencent à prendre plus de temps que je le voudrais.

Actuellement, je suis:

  • À l'aide de Bibliothèques Statiques à faire en sorte la plupart de mon code n'a pas besoin d'être compilé à chaque fois que je l'ai nettoyer et créer mon projet principal

  • Avez supprimé la plupart des ressources de mon d'application, et de tester avec une dur codé chemin du système de fichiers de l'iPhone simulateur chaque fois que possible, de sorte à mon les ressources n'ont pas à être constamment emballé comme je apporter des modifications à eux.

J'ai remarqué que la "Vérification" Dépendances de la phase semble prendre plus de temps que je le voudrais. Des conseils pour diminuer qui ainsi serait appréciée!

56voto

Reed Copsey Points 315315

Souvent, la plus grande chose que vous pouvez faire est de contrôler votre inclusion des fichiers d'en-tête.

Y compris les "extra" fichiers d'en-tête dans le code source ralentit considérablement la compilation. Cette tend aussi à augmenter le temps requis pour la vérification de la dépendance.

Aussi, à l'aide de l'avant de la déclaration au lieu d'avoir des en-têtes inclure d'autres en-têtes peuvent réduire considérablement le nombre de dépendances, et d'aider l'ensemble de vos horaires.

23voto

fons Points 702

J'ai écrit un vaste billet de blog sur comment j'ai amélioré iOS cycle de développement Spotify:

Le rasage de 50% le temps d'attente à partir de l'iOS Édition-compilation-cycle d'Essai

Il se résumait à:

1) Arrêter de générer de la dSYM faisceaux.

2) Éviter de compiler avec -O4 si vous utilisez Clang.

17voto

Form Points 895

Personnellement je suis passé compilateur LLVM-Clang pour mon Mac et projets de développement ont vu une diminution spectaculaire des temps de construire. Il y a aussi le LLVM-GCC compilateur mais je ne suis pas sûr que ce serait aider à construire des fois, mais c'est quelque chose que vous pouvez essayer aussi, si LLVM-Clang ne fonctionne pas pour l'iPhone app de la compilation.

Je ne suis pas sûr à 100% LLVM est pris en charge pour le développement de l'iPhone, mais je pense que je me souviens avoir lu dans un flux d'actualités qu'il est. Ce n'est pas de l'optimisation, vous pouvez mettre en œuvre dans votre code, mais ça vaut le coup d'essayer!

12voto

Dan Carter Points 334

Si vous n'êtes pas à l'aide de 8 go de mémoire vive, mise à niveau maintenant.

Je viens de mettre mon macbook pro de 4 go à 8 GO. Mon projet le temps de construction est passé de 2:10 à 0:45. J'ai été impressionné par l'amélioration. Il rend également la navigation web pour une recherche plus active et général Xcode performance lors de l'indexation, etc.

11voto

Tim Keating Points 2942

La réponse est facile: ajouter une autre machine sous XCode sur votre réseau local. XCode intègre distcc pour faire distribué compile. Il peut même utiliser Bonjour, pour trouver d'autres construire des hôtes, ce qui simplifie le processus de configuration ce qui a grandement. Pour les grandes constructions, la distribution, vous pouvez obtenir un accroissement de la vitesse qui est presque linéairement proportionnelle au nombre de construire des machines (2 machines prend la moitié du temps, trois prend une troisième et ainsi de suite).

Pour voir comment mettre en place cela, vous pouvez consulter ce développement doc. Il dispose également d'autres moment de la construction des stratégies d'amélioration, telles que l'utilisation d'en-têtes précompilés et prédictive construit.

Edit: Malheureusement, il semble qu'Apple a supprimé cette fonctionnalité de Xcode 4.3: http://lists.apple.com/archives/xcode-users/2012/Mar/msg00048.html

Xcode 5 a une version serveur qui peut faire CI, mais je doute que cela va conférer des avantages pour les réseaux ad hoc les versions en développement. Cependant, il y a quelques inopinées des fonctionnalités qui devrait accélérer considérablement les temps de construire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X