Heim >Backend-Entwicklung >Golang >Ist die Go-Sprachkompilierung schnell?

Ist die Go-Sprachkompilierung schnell?

青灯夜游
青灯夜游Original
2021-06-07 14:00:083211Durchsuche

Go-Sprache lässt sich schnell kompilieren, weil: 1. Verwendung der Importreferenzverwaltungsmethode; 2. Kein Aufwand für die Vorlagenkompilierung; 3. Bootstrap-Compiler-Optimierung; Vereinfachen Sie die Codeanalyse während des Kompilierungsprozesses.

Ist die Go-Sprachkompilierung schnell?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, GO 1.11.2, Dell G3-Computer.

Jetzt gibt es mehrere Hauptfunktionen von Go, darunter Kompilierungsgeschwindigkeit, Ausführungsgeschwindigkeit, Speicherverwaltung und gleichzeitige Programmierung.

Warum ist die Go-Kompilierung schnell? Natürlich beginnt das Design der Go-Sprache nicht ganz bei Null. Zunächst versuchte das Go-Team, ein Kompilierungs-Frontend für die Go-Sprache zu entwerfen und zu implementieren, das in eine Maschine kompiliert wurde Code vom C-basierten gcc-Compiler. Dieser Front-End-Compiler für gcc ist auch gccgo, einer der aktuellen Go-Compiler.

Anstatt darüber zu sprechen, warum die Kompilierung von Go schnell ist, sprechen wir zunächst darüber, warum die Kompilierung von C++ auch mit gcc möglich ist. Der größte Teil des Unterschieds in der Kompilierungsgeschwindigkeit ist wahrscheinlich auf das Sprachdesign selbst zurückzuführen.

Bevor wir das Problem diskutieren, muss eines erklärt werden: Die hier verglichenen Kompilierungsgeschwindigkeiten beziehen sich alle auf die statische Kompilierung.

Der Unterschied zwischen statischer Kompilierung und dynamischer Kompilierung

Statische Kompilierung: Wenn der Compiler eine ausführbare Datei kompiliert, muss er die verwendete Linkbibliothek extrahieren und den Link in die ausführbare Datei packen. Das Kompilierungsergebnis enthält nur eine ausführbare Datei dokumentieren.

Dynamische Kompilierung: Die ausführbare Datei muss von einer unabhängigen Bibliotheksdatei begleitet werden. Um die Größe der ausführbaren Datei zu verringern, rufen Sie die Bibliothek einfach während der Ausführung auf.


Die beiden Methoden haben ihre eigenen Vor- und Nachteile. Ersteres muss die Kompatibilitätsprobleme verschiedener Bibliotheksversionen nicht bewältigen, und letzteres kann die Speicher- und Speichernutzung reduzieren (da verschiedene Programme dieselbe Bibliothek gemeinsam nutzen können). Welche Methoden besser und welche schwächer sind, hängt vom jeweiligen technischen Problem ab. Die Standardkompilierungsmethode von Go ist die statische Kompilierung.

Zurück zu der Frage, die wir diskutieren möchten: Warum ist die C++-Kompilierung langsam?

Es gibt zwei Hauptgründe, warum die C++-Kompilierung langsam ist:

1. Die Include-Methode von Header-Dateien

2. Kompilierung von Vorlagen

C++ verwendet die Include-Methode, um auf Header-Dateien zu verweisen, was den Code erhöht Wenn beispielsweise N Dateien in demselben Projekt dieselbe Header-Datei enthalten, führt der Compiler die Header-Datei in jeden Code ein, sodass dieselbe Header-Datei kompiliert wird N-mal (dies ist meistens unnötig);
Die von C++ verwendeten Vorlagen dienen der Unterstützung generischer Programmierung. Sie können beim Schreiben generischer Funktionen verschiedener Typen großen Komfort bieten, aber dies wird den Compiler erheblich bereichern Kompilierungsaufwand.

Natürlich verfügt C++ über viele nachfolgende Optimierungsmethoden für diese beiden Probleme, aber viele Entwickler möchten nicht zu viel Zeit und Energie dafür aufwenden.

Die meisten späteren Programmiersprachen verwenden das Importmodul anstelle von Include-Headerdateien, um das Problem der wiederholten Kompilierung zu lösen. Natürlich verwendet Go auch die Importmethode Beim Design verfolgt Go einen einfachen Ansatz und integriert keine funktionale Programmierung in das Design-Framework. Daher entsteht kein Zeitaufwand durch die Vorlagenkompilierung (der Mangel an allgemeiner Unterstützung ist auch der Grund, warum viele Menschen mit der Go-Sprache unzufrieden sind). .

Meiner Meinung nach lässt sich

Go aus vier Gründen schnell kompilieren:

1. Es gibt keine Vorlagenkompilierungslast;

3 ;

4. Weniger Schlüsselwörter.

Es gibt 25 Schlüsselwörter in der Go-Sprache:

break

default

funcinterfaceselectcasedefergo mapstructchan elsegotopackageswitchconstfallthroughifrangetypecontinuefürImportRückgabevar

Der Grund, warum die Schlüsselwörter in der Go-Sprache bewusst auf so wenige beschränkt werden, besteht darin, die Codeanalyse während des Kompilierungsprozesses zu vereinfachen. Wie in anderen Sprachen können Schlüsselwörter nicht als Bezeichner verwendet werden.

Um die Kompilierung zu beschleunigen, C++ aufzugeben und auf Go umzusteigen, sollten Sie auch überlegen, ob Sie auf die Vorteile der generischen Programmierung verzichten möchten.

Hinweis: Generics werden möglicherweise in der Go 2-Version unterstützt.

Hinweis:
Obwohl Go nicht die ultimative Leistung von C++ erreichen kann, ist es in den meisten Fällen sehr ähnlich;
Go und Java sind in Bezug auf den Algorithmus-Zeitaufwand fast gleich, aber in Bezug auf den Speicheraufwand ist Java es viel höher;
In den meisten der oben genannten Fälle sind zumindest der Zeit- und Speicheraufwand von Go viel besser als bei Python

Empfohlenes Lernen: Golang-Tutorial

Das obige ist der detaillierte Inhalt vonIst die Go-Sprachkompilierung schnell?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn