Erstellen Sie eine Datei mit dem Namen main.go
, versuchen wir es mit einem einfachen Hallo-Welt-Programm.
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
Ich benutze go Version 1.9.1
$ go version
go version go1.9.1 linux/amd64
Kompilieren Sie mit dem Standardbefehl go build
.
$ go build main.go
$ ls -lh
-rwxr-xr-x-x 1 nil nil 1.8M Oct 27 07:47 main
Lassen Sie uns noch einmal mit kompilieren, go build
aber mit ldflags
wie oben vorgeschlagen,
$ go build -ldflags "-s -w" main.go
$ ls -lh
-rwxr-xr-x-x 1 nil nil 1.2M Oct 27 08:15 main
Die Dateigröße wird um 30% reduziert.
Lassen Sie uns jetzt verwenden gccgo
,
$ go version
go version go1.8.1 gccgo (GCC) 7.2.0 linux/amd64
Bauen gehen mit gccgo
,
$ go build main.go
$ ls -lh
-rwxr-xr-x 1 nil nil 34K Oct 27 12:18 main
Die Binärgröße wird um fast 100% reduziert. Lassen Sie uns noch einmal versuchen, unsere main.go
mit gccgo
aber mit Build-Flags zu bauen.
$ go build -gccgoflags "-s -w" main.go
-rwxr-xr-x 1 nil nil 23K Oct 27 13:02 main
Warnung:
Da gccgo
Binärdateien dynamisch verknüpft wurden. Wenn Sie eine Binärdatei haben, die sehr groß ist, wird Ihre Binärdatei beim Kompilieren mit gccgo nicht um 100% verringert, sondern um einen beträchtlichen Betrag.
Im Vergleich zu gc kompiliert gccgo Code langsamer, unterstützt jedoch leistungsfähigere Optimierungen, sodass ein von gccgo erstelltes CPU-gebundenes Programm normalerweise schneller ausgeführt wird. Alle im Laufe der Jahre in GCC implementierten Optimierungen sind verfügbar, einschließlich Inlining, Schleifenoptimierungen, Vektorisierung, Befehlsplanung und mehr. Während es nicht immer besseren Code erzeugt, können mit gccgo kompilierte Programme in einigen Fällen 30% schneller ausgeführt werden.
Die GCC 7-Versionen werden voraussichtlich eine vollständige Implementierung der Go 1.8-Benutzerbibliotheken enthalten. Wie bei früheren Versionen ist die Go 1.8-Laufzeit nicht vollständig zusammengeführt, dies sollte jedoch für Go-Programme nicht sichtbar sein.
Vorteile:
- Reduzierte Größe
- Optimiert.
Nachteile
- Langsam
- Die neueste Version von kann nicht verwendet werden
go
.
Sie können hier und hier sehen .