Heim > Backend-Entwicklung > Golang > Wie kann ich nicht verwendeten Code in Go zur Kompilierungszeit entfernen?

Wie kann ich nicht verwendeten Code in Go zur Kompilierungszeit entfernen?

DDD
Freigeben: 2024-12-31 07:06:10
Original
752 Leute haben es durchsucht

How Can I Remove Unused Code in Go at Compile Time?

Ungenutzten Code in Go zur Kompilierungszeit entfernen

Go-Pakete werden oft von mehreren Modulen oder Programmen verwendet. Obwohl nur ein kleiner Teil der Funktionalität erforderlich ist, kann am Ende das gesamte Paket in jede ausführbare Datei kompiliert werden. Dies kann zu großen Binärdateien führen, die nicht verwendete Funktionen und Zeichenfolgen enthalten.

Leider bietet Go im Gegensatz zu einigen anderen Programmiersprachen derzeit keine Möglichkeit, nicht verwendeten Code zur Kompilierungszeit explizit zu entfernen. Der Compiler optimiert und entfernt bis zu einem gewissen Grad nicht erreichbaren Code, kann jedoch nicht verwendeten Code, der potenziell erreichbar ist, nicht ermitteln, selbst wenn er nie explizit aufgerufen wird.

Dieses Verhalten kann mit dem folgenden Code demonstriert werden:

// play/subplay.go
package subplay

func A() {
    fmt.Printf("this is function A()")
}

func B() {
    fmt.Printf("secret string")
}
Nach dem Login kopieren

Im Hauptmodul importieren wir das Subplay-Paket, rufen aber nur die Funktion A() auf:

// main.go
package main

import "play/subplay"

func main() {
    subplay.A()
}
Nach dem Login kopieren

Obwohl B() nie aufgerufen wird, Die Zeichenfolge „geheime Zeichenfolge“ ist immer noch in der resultierenden Binärdatei enthalten.

Wie in den Antworten auf diese Frage erwähnt, besteht eine Problemumgehung darin, die durch importierte Pakete eingeführten Abhängigkeiten zu berücksichtigen. Durch den Import von net/http werden beispielsweise auch 39 andere Pakete importiert, was die Binärgröße erheblich erhöhen kann, selbst wenn keines dieser Pakete verwendet wird.

Während der Compiler möglicherweise nicht in der Lage ist, nicht verwendeten Code zu entfernen, ist er nicht in der Lage, nicht verwendeten Code zu entfernen ist nach wie vor unerlässlich, um den Code effizienter zu gestalten. Das Vermeiden unnötiger Funktionsaufrufe, das Halten schlanker Datenstrukturen und das Minimieren von String-Zuweisungen können dazu beitragen, die Binärgröße zu reduzieren.

Das obige ist der detaillierte Inhalt vonWie kann ich nicht verwendeten Code in Go zur Kompilierungszeit entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage