Combien de temps faut-il pour compiler un code complexe


1

le XKCD La bande dessinée ci-dessous suggère que le code prend beaucoup de temps à compiler (peut-être pas assez de temps pour organiser un combat à l'épée, mais vous voyez l'idée). Cependant, avec les codes Java simples sur lesquels j'ai travaillé, la compilation de 1 000 lignes environ dans BlueJ prend environ 2 secondes, et d'autres IDE comme Eclipse semblent être compilées à la volée dans une certaine mesure.

Ainsi, dans quelles circonstances (langage, complexité du code, etc.) un morceau de code prendrait effectivement beaucoup de temps (par exemple,> 1 minute) à compiler, ou cette bande dessinée prend-elle simplement des libertés de création (ce qui semble différent de xkcd).

enter image description here


5
Le noyau Linux complet me prend 15 minutes par exemple
djsmiley2k

3
C'est un peu difficile à quantifier ... cela dépend beaucoup de votre machine, mais la compilation du noyau Linux peut prendre une demi-heure, OpenOffice prenait habituellement plus d'une heure, et même Firefox prenait beaucoup de temps. 1000 lignes, ce n'est presque rien en termes de complexité logicielle.
Mokubai

Jetez un coup d’œil à Gentoo ou Linux From Scratch.
Sacha K

Cela dépend du moment où le dessin a été dessiné. Dans les années 1970, la construction d’un système d’exploitation IBM 360 s’exécutait du jour au lendemain. Mais cela utilisé macros Assembler.
David Marshall

2
La blague que le dessin animé fait, c'est que le patron n'a aucune idée du temps qu'il faut pour compiler, il utilise donc cela comme une excuse pour se faire ridiculiser.
psusi

Réponses:


0

De nombreux facteurs contribuent à cela, mais la taille est un facteur important. La plupart des systèmes de construction modernes tentent d'effectuer une compilation partielle lorsque vous modifiez le code, de sorte que seules les parties modifiées sont générées. Cependant, certains outils ne sont pas capables de cela.

Lorsque vous compilez des millions de lignes de code .NET réparties sur des centaines de projets, le temps de compilation commence à devenir assez long. Lorsque vous compilez de grandes bibliothèques tout en compilant votre propre code source, comme cela se fait souvent dans le monde natif C / C ++, vous augmentez également le temps de compilation.

Surtout avec C et C ++, le temps passé à analyser les en-têtes est considérable. C'est un processus très lourd lié aux entrées / sorties de lire à plusieurs reprises des milliers d'en-têtes. C'est l'une des raisons pour lesquelles la technique des en-têtes pré-compilés a été créée. Bien sûr, un SSD accélère grandement cette opération.

Edit: J'ai oublié de mentionner que les compilations incluent souvent des générateurs de code spécialisés ou des compilateurs DSL. Ces outils sont souvent des projets internes sur mesure qui ne sont pas aussi optimisés que des outils largement utilisés. Ils peuvent donc devenir un goulot d'étranglement s'ils sont utilisés fréquemment.


0

Avec la technologie actuelle, il faudrait une assez grande base de code pour compiler, même une minute. Mais à l'époque où les dinosaures (ordinateurs centraux et grands mini-ordinateurs - PDP 11/70, 64K de mémoire centrale) nous revenaient à l'esprit), même un terminal connecté au seul ordinateur d'une équipe logicielle était plus grand que celui d'aujourd'hui. PC de bureau. Si vous aviez une connexion à 9600 bauds, vous étiez l’un des rares élus. La plupart d’entre nous étaient reconnaissants de passer à la version 2400! La machine était partagée dans le temps entre les utilisateurs connectés, les travaux en tranches horaires étant effectués tour à tour.

Quand une échéance approchait et que tout le monde essayait de compiler sa pièce du système cible, même les temps de réponse des communications entre terminaux en souffriraient. Dans les cas graves, le processeur passait autant de temps à échanger des tâches du disque qu’il les traitait réellement. Dans ces situations, les temps de compilation de l'ordre de plusieurs minutes n'étaient pas rares.

Je me souviens d'une conversation similaire (pire!) À cette caricature, vers 3h30 du matin, une nuit à l'approche de l'heure limite. Le département était sur 3 quarts de travail (décalage différentiel? Voyez-le!) Car le projet était si pénible pour l'homme, la seule machine pour 25 SWE était tellement embourbée. On m'a appelé pour lire un journal au terminal, en essayant de ne pas m'endormir, en attendant la fin de la compilation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.