नाम की एक फ़ाइल बनाएं main.go
, चलो सरल हैलो वर्ल्ड प्रोग्राम के साथ प्रयास करें।
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
मैं 1.9.1 संस्करण का उपयोग करता हूं
$ go version
go version go1.9.1 linux/amd64
मानक go build
कमांड के साथ संकलित करें ।
$ go build main.go
$ ls -lh
-rwxr-xr-x-x 1 nil nil 1.8M Oct 27 07:47 main
आइए एक बार फिर से संकलित करें go build
लेकिन ldflags
जैसा कि ऊपर बताया गया है,
$ go build -ldflags "-s -w" main.go
$ ls -lh
-rwxr-xr-x-x 1 nil nil 1.2M Oct 27 08:15 main
फ़ाइल का आकार 30% तक कम हो जाता है।
अब, उपयोग करने देता है gccgo
,
$ go version
go version go1.8.1 gccgo (GCC) 7.2.0 linux/amd64
बिल्डिंग के साथ जाना gccgo
,
$ go build main.go
$ ls -lh
-rwxr-xr-x 1 nil nil 34K Oct 27 12:18 main
बाइनरी आकार लगभग 100% कम हो गया है। के एक बार फिर से हमारे निर्माण की कोशिश करते हैं main.go
के साथ gccgo
, लेकिन निर्माण झंडे के साथ,
$ go build -gccgoflags "-s -w" main.go
-rwxr-xr-x 1 nil nil 23K Oct 27 13:02 main
चेतावनी:
चूंकि gccgo
बायनेरिज़ गतिशील रूप से जुड़े हुए थे। यदि आपके पास एक बाइनरी है जो आकार में बहुत बड़ा है, तो gccgo के साथ संकलित होने पर आपका बाइनरी 100% से कम नहीं होगा, लेकिन यह आकार में काफी कम हो जाएगा।
जीसी की तुलना में, gccgo कोड संकलित करने के लिए धीमा है, लेकिन अधिक शक्तिशाली अनुकूलन का समर्थन करता है, इसलिए gccgo द्वारा निर्मित सीपीयू-बाउंड प्रोग्राम आमतौर पर तेजी से चलेगा। इन वर्षों में जीसीसी में कार्यान्वित सभी अनुकूलन उपलब्ध हैं, जिनमें इनलाइनिंग, लूप ऑप्टिमाइज़ेशन, वैश्वीकरण, अनुदेश निर्धारण, और बहुत कुछ शामिल हैं। हालांकि यह हमेशा बेहतर कोड का उत्पादन नहीं करता है, कुछ मामलों में gccgo के साथ संकलित कार्यक्रम 30% तेजी से चल सकते हैं।
जीसीसी 7 रिलीज में गो 1.8 उपयोगकर्ता पुस्तकालयों के पूर्ण कार्यान्वयन को शामिल करने की उम्मीद है। पहले रिलीज के साथ, गो 1.8 रनटाइम पूरी तरह से विलय नहीं हुआ है, लेकिन यह गो कार्यक्रमों के लिए दिखाई नहीं देना चाहिए।
पेशेवरों:
- कम आकार का
- अनुकूलित।
विपक्ष
- धीरे
- के नवीनतम संस्करण का उपयोग नहीं कर सकते
go
।
आप यहाँ और यहाँ देख सकते हैं ।