Je pense que ce n'est pas que les compilateurs de Go sont rapide c'est que d'autres compilateurs sont lent .
Les compilateurs C et C++ doivent analyser d'énormes quantités d'en-têtes - par exemple, la compilation de "hello world" en C++ nécessite la compilation de 18 000 lignes de code, ce qui représente presque un demi-mégaoctet de sources !
$ cpp hello.cpp | wc
18364 40513 433334
Les compilateurs Java et C# fonctionnent dans une VM, ce qui signifie qu'avant de pouvoir compiler quoi que ce soit, le système d'exploitation doit charger toute la VM, puis ils doivent être compilés en JIT du bytecode au code natif, ce qui prend un certain temps.
La rapidité de la compilation dépend de plusieurs facteurs.
Certains langages sont conçus pour être compilés rapidement. Par exemple, le Pascal a été conçu pour être compilé à l'aide d'un compilateur à passe unique.
Les compilateurs eux-mêmes peuvent également être optimisés. Par exemple, le compilateur Turbo Pascal a été écrit en assembleur optimisé à la main, ce qui, combiné à la conception du langage, a permis d'obtenir un compilateur très rapide fonctionnant sur du matériel de classe 286. Je pense que même aujourd'hui, les compilateurs Pascal modernes (par exemple FreePascal) sont plus rapides que les compilateurs Go.
12 votes
@Support, je suis conscient de cela. Je pense que l'implémentation d'un compilateur de manière à ce qu'il compile avec une rapidité notable est tout sauf une optimisation prématurée. Plus que probablement, cela représente le résultat de bonnes pratiques de conception et de développement de logiciels. De plus, je ne supporte pas de voir les mots de Knuth sortis de leur contexte et appliqués de manière incorrecte.
62 votes
La version pessimiste de cette question est "Pourquoi le C++ compile-t-il si lentement ?". stackoverflow.com/questions/588884/
16 votes
J'ai voté pour la réouverture de cette question car elle n'est pas fondée sur une opinion. On peut donner un bon aperçu technique (sans opinion) des choix de langage et/ou de compilateur qui facilitent la vitesse de compilation.
2 votes
Pour les petits projets, Go me semble lent. C'est parce que je me souviens que Turbo-Pascal était beaucoup plus rapide sur un ordinateur qui était probablement des milliers de fois plus lent. prog21.dadgum.com/47.html?repost=true . Chaque fois que je tape "go build" et que rien ne se passe pendant plusieurs secondes, je repense aux vieux compilateurs Fortran et aux cartes perforées. YMMV. TLDR : "lent" et "rapide" sont des termes relatifs.
0 votes
Je vous recommande vivement de le lire. dave.cheney.net/2014/06/07/five-things-that-make-go-fast (en anglais) pour un aperçu plus détaillé