Fermer le menu
 

Xcode 9.2 accélère les compilations de Swift

Nicolas Furno | | 09:50 |  33

Une nouvelle option permet d’accélérer la compilation des projets en Swift dans Xcode 9.2, la dernière version de l’outil de développement d’Apple. Si vous avez installé cette mise à jour disponible depuis le début de la semaine, vous pouvez gagner du temps lors de la compilation, cette étape qui transforme les lignes de code en une app prête à l’emploi.

Xcode 9.2 pendant la compilation de notre app iOS. Cliquer pour agrandir
Xcode 9.2 pendant la compilation de notre app iOS. Cliquer pour agrandir

Apple n’a pas activé directement cette compilation plus rapide et l’option n’est même pas accessible depuis l’interface. C’est une fonction expérimentale, à activer avec cette ligne de commande (pensez à quitter Xcode avant de l’utiliser) :

defaults write com.apple.dt.Xcode  BuildSystemScheduleInherentlyParallelCommandsExclusively -bool NO

Si quelque chose ne fonctionne plus après avoir modifié cette option, vous pouvez revenir en arrière en utilisant la même ligne de commande, mais avec YES à la place de NO à la fin. Autre précision importante, cette accélération n’est disponible qu’avec le build system traditionnel, et pas pour celui en Swift proposé en option depuis Xcode 9.0. Ce dernier exploitait déjà les avancées introduites par la nouvelle option.

À l’usage, le gain dépendra de chaque projet et il sera d’autant plus sensible que l’app est complexe. Nous l’avons testée sur iGeneration, notre app iOS développée exclusivement en Swift 4, et nous avons noté un gain significatif. Alors qu’une compilation à partir de zéro demandait deux minutes et quarante secondes par défaut, elle ne nécessitait plus qu’une minute et cinquante secondes après avoir utilisé l’option. Soit un temps de compilation réduit d’environ un tiers, ce qui n’est pas si mal pour une seule ligne de commande.

Cliquer pour agrandir
Cliquer pour agrandir

Source : @McCarron

Catégories: 

Les derniers dossiers

Ailleurs sur le Web


33 Commentaires Signaler un abus dans les commentaires

avatar zarghol 06/12/2017 - 09:55 via iGeneration pour iOS

Pas mal ! J’utilise le nouveau build system depuis le début de la semaine, donc pas besoin d’activer cette option pour moi :)

avatar pecos 06/12/2017 - 10:23 (edité)

Ce temps de compilation est littéralement pathétique, comment faites vous pour travailler dans ces conditions ?
Je développe depuis 2009 des apps pour iOS, en objective-C, comparables à la vôtre en terme de taille et de complexité.
Cela ne prend que 10 secondes pour compiler après avoir demandé la commande "clean" afin de faire repartir la compilation de zéro.

Et de 2 à 3 secondes dans tous les autres cas.
(pour obtenir ces valeurs j'utilise XCode 6, c'est le plus rapide. XCode 8 est déjà plus lent, même en Obj-C. Je n'ai pas essayé encore XCode 9 mais je crains le pire.)

Comme pourrais-je travailler comme vous le faites alors qu'il m'arrive souvent de demander UNE COMPILATION PAR MINUTE de temps de travail ???
(obligatoire quand toute l'interface est programmée en code et pas avec interface builder : le moindre changement du code ne peut être apprécié que dans le simulateur, visuellement)

A la fin de la journée d'après vous en Swift ça ferait combien de temps de perdu ?
C'est délirant une lenteur pareille on se croirait revenu dans les années 80 !

Et surtout qu'aucun ne commence à me dire que mon projet doit ressembler à un "hello world" et que c'est bien normal que ça aille vite. Je ne gagne pas ma vie depuis bientôt 10 ans en vendant des "hello world".

avatar minitoine 06/12/2017 - 10:26

Ah, toi aussi tu es un adepte de la construction d'interfaces dans le code ? :D
Nous ne sommes pas seuls !

(La différence doit être là)

Sachant qu'ils n'indiquent pas non plus la machine pour compiler. C'est peut être un macbook.. (J'espère pour eux)



avatar BeePotato 06/12/2017 - 14:51 (edité)

@ minitoine : « Ah, toi aussi tu es un adepte de la construction d'interfaces dans le code ? :D »

Juste par curiosité (une sorte de sondage, quoi) : pour quelle raison, ce passage par du code plutôt que par IB ?

avatar Domsware 07/12/2017 - 00:10 via iGeneration pour iOS

@BeePotato

De mon côté je me sers de IB pour dégrossir les enchaînements de vues, la navigation et aussi comme d’un bloc note pour poser une interface rapidement. Après pour contrôler finement je passe par le code.

Sinon je n’ai pas de préférences : j’ai des applications faites en majorité avec IB et d’autres entièrement en code.

avatar Rez2a 06/12/2017 - 10:27 via iGeneration pour iOS

@pecos

Essaie de prendre un ton encore un peu supérieur non ?

Sinon tout le monde n’a pas besoin de compiler une fois par minute, on ne sait pas ce que donne leur temps de compilation sans faire de clean, on ne sait pas non plus le nombre de frameworks liés, etc. ; et va savoir, le temps qu’ils perdent à la compilation, ils le regagnent peut-être en utilisant IB plutôt qu’en faisant toute l’interface en lignes de code.

avatar pecos 06/12/2017 - 11:00

Quel ton supérieur ???

Je dis juste que des temps de compilations aussi démesurément longs pour une petite app comme iGénération c'est indigne d'Apple en 2017 et avec les machines qu'on a.

Et que je ne vois pas bosser de cette façon.

Qu'apple revoie sa copie, tant pour XCode que pour le compilo de Swift et on verra.

"Tout le monde n'a pas besoin de compiler une fois par minute ?"
Ben tiens...
Je me rappelle dans les années 80 on laissait les machines compiler le week end tellement c'était long. Hé hé... on y revient peut-être...

Mais au passage, si c'est un festival de bugs ces derniers temps chez Apple (iOS 11 et HighSierra), le fait que les devs d'Apple ne puissent pas compiler super vite pour vérifier la moindre modif y est peut-être pour quelque chose, non ? ;-)

avatar bobdu87 06/12/2017 - 11:04

xCode est devenue un usine a gaz digne de visual studio... compiler un simple "hello world" demande un diplôme d'ingénieur... alors que la ligne de commande est infirment plus simple et rapide...

avatar IGerard 06/12/2017 - 11:12 via iGeneration pour iOS

@pecos

Les temps de compilation sont déterminants dans ton boulot aujourd'hui ?

Il faut peut être plus penser avant alors

Je crois qu'au contraire les temps de compilation plus courts nous rendent moins précautionneux

Cela dit, oui, pour Swift, ça mériterait sans doute des équipes de dev bien plus conséquentes...

avatar Ducletho 06/12/2017 - 11:33 via iGeneration pour iOS

@IGerard

Hyper contrôle de pecos va dans le sens de précautionneux. Du coup, j’ai du mal à suivre ton raisonnement ?

avatar IGerard 06/12/2017 - 11:45 via iGeneration pour iOS

@Ducletho

Je ne dis pas que Pecos n'est pas un mec sérieux, je pense au contraire qu'il est comme tu dis dans le contrôle maniaque :) ce qui est sans doute une qualité ici

Mon propos est que le temps de compilation courts sont une incitation au Quick & Dirty ...

Moi c'est le temps que ça prend à la fin de la compilation qui me rend fou... le packaging est d'une lourdeur sans nom ...

avatar bobdu87 06/12/2017 - 11:51

Comme sous visual, j'ai le temps de compiler et lancer mon programme 10 fois sous linux pour le temps d'une compilation/exécution sous windows...

avatar bobdu87 06/12/2017 - 11:40

@IGerard
On peut aussi programmer proprement et avoir une compilation rapide.

Décidément tout est bon pour éviter de critiquer la pomme...

avatar IGerard 06/12/2017 - 11:50 via iGeneration pour iOS

@bobdu87

Non, tu n'y es pas... je suis d'accord, ça mériterait bien mieux

On peut même se demander si Lattner qui était le patron de tout cet outillage n'est pas parti parce que justement cette équipe n'a pas les moyens de ses ambitions

Perso ce qui me gêne le plus la dedans ce sont les bugs, le refactoring qui est rudimentaire...

Les temps de compilation ça se gomme plus facilement...

avatar Domsware 06/12/2017 - 13:06 via iGeneration pour iOS

@bobdu87

Je ne sais pas s’il s’agit de programmation propre mais en tout cas je n’ai pas ces temps de compilation chez moi, loin de là.

Sans plus d’informations la ou les causes de ces temps importants ne peuvent être déterminés. Donc taper sur Xcode c’est une erreur.

avatar fte 06/12/2017 - 12:04 via iGeneration pour iOS

@IGerard

"Je crois qu'au contraire les temps de compilation plus courts nous rendent moins précautionneux"

Ce ne sont pas les temps qui rendent moins précautionneux, ce sont les gens peu précautionneux qui sont peu précautionneux. Les gens précautionneux ne sont pas rendus moins précautionneux, un compilateur peut attendre son développeur.

Par contre lorsque tu développes un algorithme et itère tout au long de la journée, chaque poignée de secondes perdues à chaque cycle use la patience et constituent cummulées une demi-heure, une heure, plus parfois, à la fin de la journée. Impact important et direct sur la tension nerveuse et la productivité. À la fin d'un mois ça se mesure en jours perdus.

J'ai toujours équipé mes développeurs en machines de course pour ça entre autres.

avatar IGerard 06/12/2017 - 12:24 via iGeneration pour iOS

@fte

Tu t'es fait avoir par le discours de tes développeurs 😂

avatar fte 06/12/2017 - 17:21 via iGeneration pour iOS

@IGerard

Ah non, c'est mon discours et ils n'ont rien demandé avant que je fournisse. Ma politique est assez simple : machine puissante, 2 27" minimum, clavier, souris et chaise à choix jusqu'à 1000 CHF sans poser de question.

avatar IGerard 06/12/2017 - 19:21 via iGeneration pour iOS

@fte

Dev Mac ?

Tu embauches ? ;)

Au niveau matos je ne vais pas me plaindre on m'a équipé d'un bon MBP 2015

Mais dans le reste de la boîte c'est chiche, écran 24 pouces de mauvaise qualité et petit PC pas bien fameux pourtant un grand groupe qui marche fort... bon on a des locaux de rêve depuis peu pour attirer les bon éléments.

avatar fte 06/12/2017 - 11:56 via iGeneration pour iOS

@Rez2a

Essaie de prendre un ton encore plus passif agressif.

avatar ovea 06/12/2017 - 13:00 via iGeneration pour iOS

@fte

Passif agressif — j'adore cette tonalité très chamarré de la vie 🤣

P'tit problemo de load balencing

avatar IGerard 06/12/2017 - 11:03 via iGeneration pour iOS

@pecos

Ha tiens ... Pecos

Tu arrives à vivre de ton boulot sur iOS, des applications personnelles ou bien du service ?

avatar pecos 06/12/2017 - 14:36

Applications personnelles payantes.
Ça eut payé plus, mais ça suffit toujours.
Pour combien de temps je l'ignore.

avatar MacMarc 06/12/2017 - 19:44 (edité)

En même temps, à moins que je sois complètement à côté de la plaque, l'utilisation de Swift évite justement de devoir compiler à chaque fois qu'on veut tester les dernière ajoûts de lignes de code...

Ce qui doit être infiniment plus intéressant côté gain de temps, globalement.

avatar bobdu87 06/12/2017 - 10:45

2 mn 40 pour compiler ca LOL!!!!
Des centaines de classes en C++ avec quelques centaines de milliers de ligne de code, ca compile en moins de 30 secondes sous linux... LOL!

Pages