प्रोफाइलिंग तकनीक का उपयोग करके अपने गो कार्यक्रमों के प्रदर्शन में सुधार करें।
प्रोफाइलिंग एक ऐसी तकनीक है जिसका उपयोग आमतौर पर सॉफ्टवेयर विकास चक्र में प्रदर्शन का विश्लेषण करने के लिए किया जाता है कार्यक्रम, आमतौर पर कार्यक्रमों के बीच तुलना के लिए या अड़चनों और सुधार के क्षेत्रों की पहचान करने के लिए a कार्यक्रम। प्रोफाइलिंग में मेमोरी उपयोग, सीपीयू उपयोग, निष्पादन समय और अन्य सिस्टम-स्तरीय आंकड़ों जैसे विभिन्न मेट्रिक्स को मापना और विश्लेषण करना शामिल है।
प्रोफाइलिंग का उद्देश्य सबसे अधिक संसाधनों का उपभोग करने वाले प्रोग्राम के हिस्सों की पहचान करना है ताकि इसे बेहतर प्रदर्शन के लिए अनुकूलित किया जा सके। प्रोफाइलिंग डिबगिंग, मेमोरी प्रबंधन को अनुकूलित करने और समवर्ती ट्यूनिंग में भी मदद कर सकता है।
गो में प्रोफाइलिंग
गो में प्रोफाइलिंग के लिए कई टूल हैं। कुछ लोकप्रिय टूल्स में गो का बिल्ट-इन पीप्रोफ प्रोफाइलिंग टूल और लोकप्रिय थर्ड-पार्टी पैकेज जैसे गो टूल ट्रेस और गो-टॉर्च पैकेज शामिल हैं।
pprof पैकेज का हिस्सा है क्रम पैकेट। pprof पैकेज प्रारूप में रनटाइम प्रोफाइलिंग डेटा लिखने के लिए कार्यक्षमता प्रदान करता है pprof विज़ुअलाइज़ेशन टूल व्याख्या कर सकता है।
यहां बताया गया है कि आप कैसे आयात कर सकते हैं pprof अपने गो कार्यक्रमों में पैकेज करें:
आयात"पीप्रोफ"
गो कई कमांड और झंडे प्रदान करता है स्रोत कोड के साथ काम करने के लिए। निम्नलिखित चलाएँ औजार विभिन्न स्वरूपों में रूपरेखा परिणामों तक पहुँचने के लिए आदेश।
जाना उपकरण पीप्रोफ
कमांड इसके बारे में उपयोग विवरण को आउटपुट करता है pprof आज्ञा।
गो में सीपीयू प्रोफाइलिंग
सीपीयू प्रोफाइलिंग उस समय को मापता है जब प्रोग्राम कार्य निष्पादित करते समय खर्च करता है। सीपीयू प्रोफाइलिंग कोड के उन हिस्सों की पहचान करने के लिए उपयोगी है जो सबसे अधिक सीपीयू समय लेते हैं।
pprof पैकेज सीपीयू प्रोफाइल एकत्र करने, सीपीयू प्रोफाइलिंग शुरू करने और रोकने के लिए कार्य करता है, और फाइलों में प्रोफाइल डेटा लिखने के लिए एक फ़ंक्शन प्रदान करता है।
यहां बताया गया है कि सीपीयू प्रोफाइल को कैसे शुरू और बंद किया जाए और डेटा को प्रोफाइलिंग फाइल में कैसे लिखा जाए:
आयात (
"ओएस"
"रनटाइम/पीप्रोफ"
)समारोहमुख्य() {
एफ, गलती: = ओएस। बनाएं("सीपीयू_प्रोफाइल.प्रोफ")
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
आस्थगित करें एफ। बंद करना()त्रुटि = पीप्रोफ। स्टार्टसीपीयूप्रोफाइल (एफ)
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
आस्थगित करें pprof. स्टॉपसीपीयूप्रोफाइल()
// कोड प्रोफाइल किया जाना है
}
मुख्य फ़ंक्शन एक फ़ाइल बनाता है और फ़ाइल स्ट्रीम को a के साथ बंद करता है आस्थगित करें बयान और बंद करना फ़ाइल उदाहरण का कार्य। स्टार्टसीपीयूप्रोफाइल फ़ंक्शन एक CPU प्रोफ़ाइल प्रारंभ करता है और डेटा को फ़ाइल में लिखता है, और स्टॉपसीपीयूप्रोफाइल प्रोफ़ाइल स्ट्रीम को a के साथ बंद करता है आस्थगित करें कथन। सीपीयू प्रोफाइल शुरू करने और बंद करने के बाद, आप उस कोड को लिखने के लिए आगे बढ़ सकते हैं जिसका आप विश्लेषण करना चाहते हैं।
यहाँ चलाने का परिणाम है pprof कार्यक्रम से प्रोफ़ाइल फ़ाइल के साथ आदेश:
चला रहा है pprof फ़ाइल के साथ कमांड एक इंटरएक्टिव शेल शुरू करता है जो आपको प्रोफाइलिंग डेटा का पता लगाने की अनुमति देता है। आप जैसे कमांड का उपयोग कर सकते हैं ऊपर और सूची उन कार्यों को देखने के लिए जो निष्पादित करने में सबसे अधिक समय लेते हैं।
गो में मेमोरी प्रोफाइलिंग
मेमोरी प्रोफाइलिंग एक तकनीक है जिसका उपयोग कोड में फ़ंक्शन के मेमोरी उपयोग को मापकर कोड में मेमोरी लीक और महंगे मेमोरी उपयोग की पहचान करने के लिए किया जाता है।
आप के साथ एक मेमोरी प्रोफाइल शुरू कर सकते हैं राइटहेप प्रोफाइल समारोह। राइटहेप प्रोफाइल फ़ंक्शन फ़ाइल उदाहरण लेता है और फ़ाइल में प्रोफ़ाइल डेटा लिखता है।
आयात (
"ओएस"
"रनटाइम/पीप्रोफ"
)समारोहमुख्य() {
एफ, गलती: = ओएस। बनाएं("मेम_प्रोफाइल.प्रोफ")
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
आस्थगित करें एफ। बंद करना()त्रुटि = पीप्रोफ। राइटहेपप्रोफाइल (च)
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
// कोड प्रोफाइल किया जाना है
}
मुख्य फ़ंक्शन एक प्रोफ़ाइल फ़ाइल बनाता है, और राइटहेप प्रोफाइल फ़ंक्शन फ़ाइल उदाहरण को एक तर्क के रूप में लेता है और फ़ाइल में लिखने के बाद एक लेखन त्रुटि प्रकार देता है। आप आगे कर सकते हैं अपनी आवश्यकता के अनुसार त्रुटि को संभालें.
गो के साथ ब्लॉक प्रोफाइलिंग
ब्लॉक प्रोफाइलिंग म्यूटेक्स और चैनल जैसे सिंक्रोनाइज़ेशन प्रिमिटिव के लिए प्रोग्राम के प्रतीक्षा समय को मापता है। ब्लॉक प्रोफाइलिंग कोड के उन हिस्सों की पहचान करने के लिए उपयोगी है जो ब्लॉकिंग का कारण बन सकते हैं।
ऊपर देखो फ़ंक्शन प्रोफ़ाइल को निर्दिष्ट स्ट्रिंग के नाम से लौटाता है, और को लिखना का कार्य ऊपर देखो फ़ंक्शन फ़ाइल में प्रोफ़ाइल का एक pprof-स्वरूपित स्नैपशॉट लिखता है।
यहां बताया गया है कि आप अपने गो प्रोग्राम के लिए ब्लॉक प्रोफाइलिंग कैसे लागू कर सकते हैं:
आयात (
"ओएस"
"रनटाइम/पीप्रोफ"
)समारोहमुख्य() {
एफ, गलती: = ओएस। बनाएं("ब्लॉक_प्रोफाइल.प्रोफ")
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
आस्थगित करें एफ। बंद करना()त्रुटि = पीप्रोफ। ऊपर देखो("अवरोध पैदा करना".WriteTo (एफ, 0)
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
// कोड प्रोफाइल किया जाना है
}
प्रोग्राम ब्लॉक प्रोफाइल डेटा को स्टोर करने के लिए एक फाइल बनाता है, इसके साथ ब्लॉक की तलाश करता है ऊपर देखो कार्य करता है, और फ़ाइल में ब्लॉक प्रोफ़ाइल डेटा लिखता है।
गो के साथ ट्रेस प्रोफाइलिंग
ट्रेस प्रोफाइलिंग एक प्रोग्राम के निष्पादन को मापने के लिए एक तकनीक है, जिसमें गोरोइन शेड्यूलिंग और सिस्टम कॉल शामिल हैं। ट्रेस प्रोफाइलिंग प्रदर्शन बाधाओं की पहचान करने और विभिन्न कार्यक्रम भागों के बीच बातचीत को समझने के लिए उपयोगी है।
पता लगाना पैकेज ट्रेस प्रोफाइलिंग के लिए कार्य प्रदान करता है। यह पैकेज भी इसका एक हिस्सा है क्रम पैकेट।
आयात (
"ओएस"
"रनटाइम/ट्रेस"
)समारोहमुख्य() {
एफ, गलती: = ओएस। बनाएं("पता लगाना")
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
आस्थगित करें एफ। बंद करना()त्रुटि = ट्रेस। प्रारंभ (च)
अगर गलती! = शून्य {
घबड़ाहट(गलत)
}
आस्थगित करें पता लगाना। रुकना()
// कोड प्रोफाइल किया जाना है
}
प्रोग्राम ट्रेस डेटा को स्टोर करने के लिए एक ट्रेस फ़ाइल बनाता है, ट्रेसर को इसके साथ शुरू करता है शुरू फ़ंक्शन जो फ़ाइल उदाहरण लेता है और एक त्रुटि प्रकार देता है, और ट्रेसर को इसके साथ हटा देता है रुकना समारोह।
गो सोर्स कोड को फॉर्मेट करने के लिए टूल भी प्रदान करता है। प्रोफाइलिंग टूल्स के साथ, आप कोड मानकों को बनाए रखने के लिए फॉर्मेटिंग टूल्स का उपयोग कर सकते हैं। gofmt उपकरण एक अंतर्निहित स्वरूपण उपकरण है जिसका उपयोग आप अपने पैकेज के लिए निर्दिष्ट नियमों के आधार पर अपने गो स्रोत कोड को प्रारूपित करने के लिए कर सकते हैं।