Maison > développement back-end > Golang > La compilation du langage Go est-elle rapide ?

La compilation du langage Go est-elle rapide ?

青灯夜游
Libérer: 2021-06-07 14:00:08
original
3214 Les gens l'ont consulté

Le langage Go se compile rapidement grâce à : 1. L'utilisation de la méthode de gestion des références d'importation ; 2. Aucune charge de compilation de modèles 3. Optimisation du compilateur Bootstrap après la version 1.5 4. Moins de clés Il y a un total de 25 mots-clés ; dans le langage Go, ce qui peut simplifier l'analyse du code pendant le processus de compilation.

La compilation du langage Go est-elle rapide ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, GO 1.11.2, ordinateur Dell G3.

Go possède désormais plusieurs fonctionnalités principales, notamment la vitesse de compilation, la vitesse d'exécution, la gestion de la mémoire et la programmation simultanée.

Pourquoi la compilation de Go est-elle si rapide ?

Bien sûr, la conception du langage Go ne part pas complètement de zéro. Au départ, l'équipe Go a essayé de concevoir et d'implémenter un langage Go. front-end de compilation pour le langage Go. Le compilateur gcc basé sur C est compilé en code machine. Ce compilateur frontal pour gcc est gccgo, l'un des compilateurs Go actuels.

Au lieu de parler de la raison pour laquelle la compilation de Go est rapide, parlons d'abord de la raison pour laquelle la compilation de C++ est lente. C++ peut également être compilé avec gcc. La plupart de la différence de vitesse de compilation vient probablement de la conception du langage lui-même. .

Avant de discuter du problème, une chose qui doit être expliquée est la suivante : les vitesses de compilation comparées ici sont toutes sous compilation statique.

La différence entre la compilation statique et la compilation dynamique

Compilation statique : Lorsque le compilateur compile le fichier exécutable, il doit extraire la bibliothèque de liens utilisée. est regroupé dans un fichier exécutable et le résultat de la compilation n'est qu'un seul fichier exécutable.
Compilation dynamique : le fichier exécutable doit être accompagné d'un fichier de bibliothèque indépendant. Ne pas empaqueter la bibliothèque dans le fichier exécutable pour réduire la taille du fichier exécutable. Appelez simplement la bibliothèque pendant l'exécution.

Les deux méthodes ont leurs propres avantages et inconvénients. La première n'a pas besoin de gérer les problèmes de compatibilité des différentes versions des bibliothèques, tandis que la seconde peut réduire l'utilisation de la mémoire et du stockage (car différents programmes peuvent partager). la même bibliothèque). La méthode de compilation par défaut de Go est la compilation statique.

Retour à la question dont nous voulons discuter : Pourquoi la compilation C++ est-elle lente ?

Il y a deux raisons principales pour lesquelles la compilation C++ est lente :

1. La méthode d'inclusion des fichiers d'en-tête

2. 🎜>

C++ utilise la méthode include pour référencer les fichiers d'en-tête, ce qui augmentera le code qui doit être compilé à un niveau multiplicateur. Par exemple, lorsque le même fichier d'en-tête est inclus par N fichiers sous le même projet. , le compilateur introduira le fichier d'en-tête dans chaque morceau de code, donc le même fichier d'en-tête sera compilé N fois (cela est inutile la plupart du temps

Les modèles utilisés par C++ sont destinés à prendre en charge la programmation générique) ; . Lors de l'écriture de différentes fonctions génériques de type, cela peut être très pratique, mais cela ajoutera beaucoup de charge de compilation inutile au compilateur.

Bien sûr, C++ propose de nombreuses méthodes d'optimisation ultérieures pour ces deux problèmes, mais pour de nombreux développeurs, ils ne veulent pas y consacrer trop de temps et d'énergie.

La plupart des langages de programmation ultérieurs utilisent le module d'importation au lieu du fichier d'en-tête include
pour introduire les fichiers. L'importation résout le problème de la compilation répétée. Bien sûr, Go l'utilise également. méthode ; sur la question de la compilation des modèles, puisque Go suit une approche simple dans sa philosophie de conception, il n'intègre pas de programmation fonctionnelle dans le cadre de conception, il n'y a donc naturellement pas de temps supplémentaire causé par la compilation des modèles (ce qui est également beaucoup sans générique). support). Raisons pour lesquelles les gens ne sont pas satisfaits du langage Go).


Donc à mon avis,

Go compile rapidement principalement pour quatre raisons :

1 La méthode de gestion des références d'import est utilisée

Non. Charge de compilation des modèles ;

3. Optimisation du compilateur Bootstrap après la version 1.5 ;

4.

Il y a 25 mots-clés en langage Go :

La raison pour laquelle les mots-clés dans le langage Go sont délibérément si peu nombreux est de simplifier l'analyse du code pendant le processus de compilation. Comme dans d’autres langues, les mots-clés ne peuvent pas être utilisés comme identifiants.

Donc, afin d'accélérer la compilation et d'abandonner le C++ et de passer à Go, vous devriez également vous demander s'il faut renoncer aux avantages de la programmation générique.

Remarque : les génériques peuvent être pris en charge dans la version Go 2.

remarque :
Bien que Go ne puisse pas atteindre les performances ultimes du C++, elles sont très proches dans la plupart des cas
La surcharge temporelle des algorithmes entre Go et Java est difficile à atteindre ; faites la différence, mais en termes de surcharge de mémoire, Java est beaucoup plus élevé
Go est bien meilleur que Python dans la plupart des situations ci-dessus, du moins en termes de surcharge de temps et de mémoire

Apprentissage recommandé :

Tutoriel Golang

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal