In den letzten Jahren wurde die Programmiersprache Go häufig in den Bereichen Cloud Computing, Big Data, künstliche Intelligenz und anderen Bereichen eingesetzt, da sie über viele hervorragende Funktionen sowie eine schnelle Kompilierung und eine gute Speicherverwaltung verfügt. Bei der Entwicklung einiger Großprojekte stoßen wir jedoch häufig auf ein Problem: Das Golang-Programm ist zu groß. Warum passiert das? In diesem Artikel werden die Ursachen dieses Problems erläutert und einige Lösungen aufgeführt.
Ursache des Problems
Bei der Entwicklung von Golang-Anwendungen importieren wir normalerweise einige Bibliotheken von Drittanbietern, um die von ihnen bereitgestellten Tools, Methoden und Dienste zu nutzen. Dadurch wird unser Code flüssiger und effizienter, ohne dass jede Funktion von Grund auf neu geschrieben werden muss. Dieser Komfort bringt jedoch ein Problem mit sich: die Taschengröße.
Wenn Sie eine Bibliothek importieren, kompiliert der Go-Compiler den gesamten Code für die Bibliothek zusammen mit seinen Abhängigkeiten in eine Binärdatei. Das heißt, wenn der Code der Bibliothek groß ist oder von vielen anderen Bibliotheken abhängt, wird auch die endgültige ausführbare Datei groß.
Zum Beispiel, wenn Sie in Ihrer Anwendung einige beliebte Bibliotheken von Drittanbietern verwenden, wie Gin, Gorm, gRPC usw. Selbst wenn Ihre Anwendung sehr einfach ist, kann die endgültige ausführbare Datei eine Größe von mehreren zehn oder sogar Hunderten von Megabyte erreichen.
Lösung
Um das Problem zu lösen, dass das Golang-Programm zu groß ist, müssen wir einige Lösungen in Betracht ziehen. Nachfolgend sind einige mögliche Methoden aufgeführt. Eine Möglichkeit besteht darin, Ihre Abhängigkeiten zu vereinfachen. Dies kann den Code des Pakets und damit die endgültige Größe der ausführbaren Datei verringern. Dies kann jedoch die Qualität Ihrer Bewerbung beeinträchtigen, da einige wichtige Funktionen in Ihrer Bewerbung fehlen. Daher sollte diese Lösung sorgfältig geprüft werden.
Wenn Sie Ihre Anwendung kompilieren, können Sie verschiedene Architektur-Compiler und Flags verwenden, um die Größe der ausführbaren Datei zu minimieren. Auf einem Linux-System kann die Verwendung statischer Verknüpfungen beispielsweise nützlicher sein als dynamische Verknüpfungen. Sie können auch das Flag
verwenden, um die Symboltabelle und Debugging-Informationen zu entfernen und so die Größe der ausführbaren Datei zu reduzieren.-s
和 -w
UPX ist ein Komprimierer für ausführbare Dateien, der die Größe ausführbarer Dateien reduzieren kann, was für diejenigen nützlich ist, die sehr viel benötigen Nützlich für Cloud-Infrastrukturen, in denen Anwendungen in verschiedenen Umgebungen bereitgestellt werden. In Golang können wir die Tools go-bindata und go-rice verwenden, um Ressourcendateien in ausführbare Dateien zu packen und diese dann mit UPX zu komprimieren.
Docker-Images machen die Anwendungsbereitstellung sehr bequem. Indem Sie Ihre Anwendung und ihre Abhängigkeiten in ein Docker-Image packen, können Sie die Dateigröße und den Netzwerkverkehr während der Bereitstellung reduzieren. Mit Docker können Sie eine Docker-Datei schreiben, die alle erforderlichen Abhängigkeiten herunterlädt und installiert und ein sehr kleines Container-Image erstellt.
Das obige ist der detaillierte Inhalt vonDas Golang-Programm ist zu groß. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!