Profiling Tools
ruby-prof और stackprof
Profiling Tools, CoddyKit पर Ruby Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Ruby Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
बेंचमार्क और प्रोफ़ाइलर की तुलना
बेंचमार्क बताता है कि किसी काम में कितना समय लगता है। प्रोफ़ाइलर बताता है कि उसके अंदर समय कहाँ व्यतीत होता है।
- प्रोफ़ाइलर समय को हर विधि या पंक्ति के अनुसार बाँटते हैं
- वे ऐसे मुख्य धीमे हिस्से दिखाते हैं जिनका आप कभी अनुमान नहीं लगा पाते
- लोकप्रिय Ruby प्रोफ़ाइलर: ruby-prof और stackprof
# Profilers answer: which method consumed the most time?
puts 'Benchmark = how long, Profiler = where'ruby-prof का परिचय
ruby-prof एक विस्तृत इंस्ट्रुमेंटेशन प्रोफ़ाइलर है। यह हर विधि कॉल से जुड़ता है।
- कॉल की संख्या और समय का बहुत सटीक मापन
- अधिक अतिरिक्त लागत, इसलिए प्रतिनिधि नमूनों पर उपयोग कीजिए
gem install ruby-profसे इंस्टॉल किया जाता है
# Gemfile
gem 'ruby-prof'ruby-prof से ब्लॉक की प्रोफ़ाइल बनाना
परिणाम कैप्चर करने के लिए कोड को RubyProf.profile में लपेटिए, जिसे आप प्रिंट कर सकते हैं।
- यह प्रोफ़ाइल परिणाम ऑब्जेक्ट लौटाता है
- इसे आउटपुट के लिए प्रिंटर को दीजिए
require 'ruby-prof'
result = RubyProf.profile do
1000.times { |i| (1..i).reduce(:+) }
end
RubyProf::FlatPrinter.new(result).print(STDOUT)ruby-prof प्रिंटर
ruby-prof अलग-अलग दृश्य दिखाने के लिए कई प्रिंटर उपलब्ध कराता है।
FlatPrinterविधियों की क्रमबद्ध सूची देता हैGraphPrinterकॉल करने वाले और कॉल किए जाने वाले के संबंध दिखाता हैCallTreePrinterKCachegrind के लिए आउटपुट देता है
require 'ruby-prof'
result = RubyProf.profile { 100.times { 'x' * 1000 } }
RubyProf::GraphPrinter.new(result).print(STDOUT, min_percent: 1)फ़्लैट प्रोफ़ाइल पढ़ना
फ़्लैट प्रोफ़ाइल विधियों को उपभोग किए गए समय के अनुसार सूचीबद्ध करती है।
- %self विधि में स्वयं लगा समय
- total कॉल की गई विधियों सहित कुल समय
- calls विधि को कितनी बार बुलाया गया
सबसे पहले सबसे अधिक %self वाली प्रविष्टियों पर ध्यान दीजिए।
# Example flat output columns:
# %self total self wait child calls name
puts 'Optimize the top %self method first'stackprof का परिचय
stackprof एक सैंपलिंग प्रोफ़ाइलर है। यह समय-समय पर कॉल स्टैक रिकॉर्ड करता है।
- बहुत कम अतिरिक्त लागत, इसलिए उत्पादन में सुरक्षित
- CPU, घड़ी या ऑब्जेक्ट आवंटन के आधार पर नमूने लेता है
gem install stackprofसे इंस्टॉल किया जाता है
# Gemfile
gem 'stackprof'stackprof चलाना
StackProf.run एक ब्लॉक की प्रोफ़ाइल बनाता है और परिणामों को फ़ाइल में लिखता है।
mode::cpu,:wallया:objectहो सकता हैout:डंप फ़ाइल का पथ सेट करता है
require 'stackprof'
StackProf.run(mode: :cpu, out: 'profile.dump') do
1_000_000.times { |i| Math.sqrt(i) }
endstackprof के परिणामों का निरीक्षण
डंप पढ़ने के लिए stackprof कमांड-लाइन उपकरण का उपयोग कीजिए।
- सारांश के लिए
stackprof profile.dump --text - एक विधि के अंदर जाने के लिए
--method Name#meth --flamegraphफ़्लेमग्राफ डेटा बनाता है
# Shell
# stackprof profile.dump --text
# stackprof profile.dump --method 'Array#sort'
puts 'Analyze the dump with the stackprof CLI'सैंपलिंग और इंस्ट्रुमेंटेशन की तुलना
दोनों प्रोफ़ाइलर सटीकता और अतिरिक्त लागत के बीच संतुलन बनाते हैं।
- ruby-prof हर कॉल का इंस्ट्रुमेंटेशन करता है: सटीक, लेकिन धीमा
- stackprof नमूने लेता है: अनुमानित, लेकिन कम लागत वाला
- उत्पादन में stackprof और गहन जाँच के लिए ruby-prof का उपयोग कीजिए
modes = { 'ruby-prof' => 'instrumenting', 'stackprof' => 'sampling' }
modes.each { |tool, kind| puts "#{tool}: #{kind}" }घड़ी और CPU समय की तुलना
अड़चन के आधार पर प्रोफ़ाइलिंग मोड चुनिए।
- CPU मोड गणना-प्रधान कोड दिखाता है
- घड़ी मोड नेटवर्क या डिस्क जैसी इनपुट-आउटपुट प्रतीक्षाओं को भी दर्ज करता है
- डेटाबेस कॉल वाले धीमे एंडपॉइंट के लिए घड़ी मोड आवश्यक है
# I/O bound? use wall. CPU bound? use cpu.
bottleneck = 'database query'
mode = bottleneck.include?('query') ? :wall : :cpu
puts "Use mode: #{mode}"प्रोफ़ाइलिंग कार्यप्रवाह
प्रभावी प्रोफ़ाइलिंग एक चक्र का अनुसरण करती है।
- धीमी परिस्थिति को दोबारा उत्पन्न कीजिए
- मुख्य धीमे हिस्से को खोजने के लिए प्रोफ़ाइल बनाइए
- केवल उसी मुख्य धीमे हिस्से का अनुकूलन कीजिए
- सुधार की पुष्टि करने के लिए फिर से प्रोफ़ाइल बनाइए
steps = ['reproduce', 'profile', 'optimize hotspot', 're-profile']
steps.each_with_index { |s, i| puts "#{i + 1}. #{s}" }त्वरित जाँच
प्रोफ़ाइलिंग के अपने ज्ञान की जाँच कीजिए।
पुनरावलोकन
आपने प्रोफ़ाइलिंग उपकरणों के बारे में सीखा:
- प्रोफ़ाइलर केवल यह नहीं दिखाते कि कितना समय लगा, बल्कि यह भी दिखाते हैं कि समय कहाँ लगा
ruby-profविस्तृत और सटीक जानकारी के लिए हर कॉल का इंस्ट्रुमेंटेशन करता हैstackprofकम लागत पर नमूने लेता है और उत्पादन में सुरक्षित है- अड़चन के आधार पर CPU और घड़ी मोड में से चुनिए
- दोबारा उत्पन्न करें, प्रोफ़ाइल बनाएँ, अनुकूलन करें और फिर से प्रोफ़ाइल बनाएँ—इस चक्र का पालन कीजिए
अगली बार आप मेमोरी आवंटनों को कम करेंगे।
एआई शिक्षक के साथ Ruby सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 29
- पाठ
- 109
अक्सर पूछे जाने वाले प्रश्न
क्या “Profiling Tools” पाठ निःशुल्क है?
हाँ — Ruby Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Profiling Tools” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Profiling Tools” में मैं क्या सीखूँगा?
ruby-prof और stackprof आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Ruby Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Ruby Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Ruby Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Profiling Tools” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Ruby Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Ruby Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Performance मापना
- Profiling Tools
- Memory Optimization
- सामान्य Bottlenecks