adlı bir dosya oluşturun main.go
, basit bir merhaba dünya programı ile deneyelim.
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
Go 1.9.1 sürümünü kullanıyorum
$ go version
go version go1.9.1 linux/amd64
Standart go build
komutla derleyin .
$ go build main.go
$ ls -lh
-rwxr-xr-x-x 1 nil nil 1.8M Oct 27 07:47 main
Bir kez daha derleyelim go build
ama ldflags
yukarıda önerildiği gibi,
$ go build -ldflags "-s -w" main.go
$ ls -lh
-rwxr-xr-x-x 1 nil nil 1.2M Oct 27 08:15 main
Dosya boyutu% 30 azaltılır.
Şimdi kullanalım gccgo
,
$ go version
go version go1.8.1 gccgo (GCC) 7.2.0 linux/amd64
Bina ile gitmek gccgo
,
$ go build main.go
$ ls -lh
-rwxr-xr-x 1 nil nil 34K Oct 27 12:18 main
İkili boyut neredeyse% 100 oranında azaltılır. Bir kez de bizim bina deneyelim main.go
ile gccgo
ancak inşa bayraklarıyla
$ go build -gccgoflags "-s -w" main.go
-rwxr-xr-x 1 nil nil 23K Oct 27 13:02 main
Uyarı:
As gccgo
ikili dinamik bağlandı. Eğer çok büyük bir ikiliye sahipseniz, gccgo ile derlendiğinizde ikiliniz% 100 azalmayacaktır, fakat boyutu önemli ölçüde küçülecektir.
Gc ile karşılaştırıldığında, gccgo kodu derlemek için daha yavaştır ancak daha güçlü optimizasyonları destekler, bu nedenle gccgo tarafından oluşturulan CPU'ya bağlı bir program genellikle daha hızlı çalışır. Yıllar boyunca GCC'de uygulanan tüm optimizasyonlar, satır içi, döngü optimizasyonları, vektörleştirme, talimat planlaması ve daha fazlası dahil olmak üzere mevcuttur. Her zaman daha iyi kod üretmese de, bazı durumlarda gccgo ile derlenen programlar% 30 daha hızlı çalışabilir.
GCC 7 sürümlerinin Go 1.8 kullanıcı kitaplıklarının tam bir uygulamasını içermesi beklenmektedir. Önceki sürümlerde olduğu gibi, Go 1.8 çalışma zamanı tam olarak birleştirilmemiştir, ancak bu Go programları tarafından görülmemelidir.
Artıları:
- Küçültülmüş boyut
- Optimize edildi.
Eksileri
- Yavaş
- Son sürümü kullanılamaz
go
.
Burayı ve burayı görebilirsiniz .