2011-07-16 17 views
6

का उपयोग करने के लिए यह जानने की आवश्यकता है कि यह मूर्खतापूर्ण प्रश्न की तरह प्रतीत हो सकता है, लेकिन स्टैक ओवरफ्लो पर कुछ प्रश्न पूछने और अन्य लोगों के प्रश्नों को देखने के बाद, एक चीज जो अक्सर आती है यह देखने के लिए प्रोफाइलर्स का उपयोग करना है कोड धीमा चलता है, आदिप्रोफाइलर्स का उपयोग कैसे करें/

प्रोग्रामिंग शुरुआती होने के नाते, मैं इन सब के लिए नया हूं, लेकिन जब से मैं बड़ी और बड़ी परियोजना बना रहा हूं, मुझे लगता है कि ऐसा उपकरण बहुत उपयोगी साबित होगा बार। केवल एक चीज है, मुझे नहीं पता कि उनका उपयोग कैसे किया जाए।

आमतौर पर, मैं जावा में कोड के लिए जेड डेवलपर का उपयोग करता हूं, और मैंने इंटरनेट पर पढ़ा है कि एक अंतर्निर्मित है। मैंने इसका इस्तेमाल करने की कोशिश की लेकिन मुझे लगता है कि मुझे वास्तव में पता नहीं था कि मुझे कौन सा हिस्सा नहीं मिला जहां मेरा प्रोग्राम धीमा कर रहा था। मुझे नहीं पता कि ऐसा क्यों है क्योंकि मुझे नहीं पता कि इसका उपयोग कैसे किया जाए या यदि यह अच्छा नहीं होने के लिए जाना जाता है, तो मुझे लगा कि मैं यह देखने के लिए यहां पूछूंगा कि मुझे किससे शुरू करना चाहिए।

मेरे पास ग्रहण भी स्थापित है और इसका उपयोग कैसे करें (मैं ग्रहण का उपयोग करता हूं जब मैं कुछ पायथन कोडिंग कर रहा हूं या जब मैं एंड्रॉइड-डेवलपमेंट के लिए ट्यूटोरियल की कोशिश कर रहा हूं), तो यदि कोई मुफ्त प्रोफाइलर है तो मैं इसका उपयोग कर सकता हूं उन दो आईडीई में से, मैं वास्तव में इसके बारे में जानना चाहूंगा। साथ ही, प्रोफाइलर्स के बारे में मुझे जानने के लिए एक ट्यूटोरियल या मूलभूत चीजें मुझे बहुत मदद करेंगी।

अग्रिम धन्यवाद और खेद है कि मेरा प्रश्न वास्तव में प्रोग्रामिंग के बारे में नहीं है, लेकिन यह प्रोफाइलरों के बारे में मूल्यवान जानकारी प्राप्त करने के लिए सबसे अच्छी जगह जैसा लगता है।

उत्तर

3

यदि आप उलझन में हैं, so are most of the profiler vendors

समझने वाली पहली बात यह है कि - प्रोग्राम धीमे नहीं होते हैं क्योंकि उनके पास धीमे हिस्से (बाधाएं) होती हैं। वे धीमे हैं क्योंकि वे उनके मुकाबले ज्यादा करते हैं। उनके पास समय नाली है।

यह घोड़े की दौड़ की तरह है। ट्रैक में एक बाधा एक संकीर्ण जगह होगी, जहां घोड़ों को ढेर करना और धीमा होना है। एक समय की नाली पहले के साथ जुड़े एक और ट्रैक की तरह होगी, जिसमें घोड़े घूमते हैं और एक अतिरिक्त दूरी यात्रा करते हैं। फिर उस के साथ एक और ट्रैक जोड़ा जा सकता है, और दूसरा, और इसी तरह।

एक फ़ंक्शन कॉल जिसे टाला जा सकता है वह समय निकासी का एक उदाहरण है।

Here's how I find time drains. यह सरल और भाषा-स्वतंत्र है। आप इसे जेस्टैक जैसे सरल टूल के साथ भी कर सकते हैं।

प्रोफाइलर निर्माताओं का मतलब अच्छा है, लेकिन वे भ्रमित अवधारणाओं के समूह द्वारा बाधित हैं।

जैसे "जहां समय बिताया जाता है"। यदि इसका अर्थ यह है कि "जहां कार्यक्रम काउंटर अक्सर पाया जाता है", यह घोड़ा गलत रैसेट्रैक में है। आप उस रैसेट्रैक को छोटा करने का प्रयास कर सकते हैं, लेकिन वास्तविक समस्या यह है कि घोड़ा भी वहां नहीं होना चाहिए। यानी एक फ़ंक्शन कॉल है जिसे टाला जाना चाहिए था।

जैसे "माप की सांख्यिकीय सटीकता"। क्या आपको यह मापने की ज़रूरत है कि घोड़े को गलत रैसेट्रैक के आसपास कितना समय लगता है कि यह गलत रैसेट्रैक पर है? नहीं, आपको बस स्नैपशॉट (स्टैक नमूना) लेने की आवश्यकता है। गलत रैसेट्रैक पर जितना अधिक होगा, उतना ही अधिक आप इसे देखेंगे। यदि आप इसे दो बार देखते हैं, तो आप जानते हैं कि समस्या क्या है।

जैसे इसे "सीपीयू प्रोफाइलर" कहा जाता है, जो कि I/O समय को अनदेखा करने का बहाना है। कभी-कभी समय निकासी अनावश्यक I/O आपको पता नहीं था। वह ओट्स के एक बैग पर घुसने के लिए घोड़े की तरह होगा। यदि घोड़ा चल रहा है, तो आप केवल अपना स्नैपशॉट ले सकते हैं, आप कभी भी पर ध्यान नहीं देंगे। आप केवल ध्यान दें कि समय संदिग्ध रूप से लंबा था।

है more where those came from ...

+0

आपके द्वारा पोस्ट किए गए लिंक बहुत रोचक पढ़ते हैं। मैं आपके द्वारा सुझाए गए कार्यों को लागू करने की कोशिश करूंगा और मुझे यकीन है कि यह भविष्य में एक टन की मदद करने जा रहा है। आपका बहुत बहुत धन्यवाद! –

3

यदि आप एक मुफ्त उपकरण की तलाश में हैं, jvisulavm एक शानदार है। यह एक मानक जेडीके इंस्टॉल के साथ आता है, इसका निष्पादन योग्य जावा, जावैक, जावाडोक और उनके भाई बहनों के बगल में जावा-एचओएमई की बिन निर्देशिका के अंतर्गत होता है। आप एक और अधिक उन्नत व्यावसायिक उत्पाद YourKit लिए देख रहे हैं या jprofiler दोनों दिलचस्प हैं

http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/index.html

: यहाँ एक ट्यूटोरियल है।

+1

VisualVM, JDK की तुलना में अधिक नियमित रूप से जारी है ताकि आप [नवीनतम संस्करण] डाउनलोड करने के लिए चाहते हो सकता है (http://visualvm.java.net/download.html)। –

1

प्रोफाइलर का उपयोग करना एक छोटा काम नहीं है और वीएम आंतरिक के बारे में बहुत सारे पृष्ठभूमि ज्ञान की आवश्यकता है। इसलिए स्मृति प्रबंधन, हॉट स्पॉट इत्यादि के बारे में पढ़ने के साथ शुरुआत करना सबसे अच्छा है। प्रोफाइलर सहायता पृष्ठों में कुछ सभ्य सहायता मिल सकती है, उदाहरण के लिए, help for JProfiler देखें।

मेरे अनुभव में, मुझे केवल कुछ बार प्रोफाइलर का उपयोग करना पड़ा जब कुछ गंभीर प्रदर्शन समस्याएं उत्पन्न हुईं जिन्हें अन्य माध्यमों से ट्रैक नहीं किया जा सका। कई मामलों में लॉग इन टाइमस्टैम्प की तरह सरल चीजें, प्रदर्शन समस्याओं को हल करने में मदद करती हैं। तो अंतिम उपाय के रूप में प्रोफाइलर का उपयोग करें। कहा कि, मैंने मामलों के बारे में सुना जब लोग नियमित रूप से इसका इस्तेमाल करेंगे। हालांकि मैं इसके बारे में लेकिन इस प्रक्रिया को मेरे लिए काम करने के लिए कभी नहीं मिला।

मुझे कोई भी मुफ्त प्रोफाइलर नहीं मिला जो मुझे संतुष्ट करेगा। वाणिज्यिक समय जिन्हें मैंने अलग-अलग समय पर उपयोग किया था JProbe और JProfiler हैं। मुझे जेपीरोफाइलर पसंद आया लेकिन दोनों आपको परिणाम प्राप्त करने की अनुमति देते हैं।

आम तौर पर, प्रक्रिया प्रोफाइलर के अंदर आपके एप्लिकेशन को कॉन्फ़िगर करने के साथ शुरू होती है और यह बताती है कि आप किन कक्षाओं को विशेष रूप से देखना चाहते हैं। जब आप प्रोफाइलर में अपना आवेदन शुरू करते हैं, तो वर्गों को इस तरह से साधन मिल जाता है कि निष्पादन और वीएम के बारे में जानकारी रिकॉर्ड हो जाती है। तो अपने आवेदन को चलाने के बाद आप यह देखने के लिए विश्लेषण कर सकते हैं कि कौन सा कोड अधिकांश समय उपभोग करता है और अधिकांश वस्तुएं किस स्मृति का उपयोग करती हैं। आप अक्सर धागे, मॉनीटर और अन्य चीजों की संख्या की निगरानी भी कर सकते हैं। सभी डेटा का लाभ उठाने के लिए आपको वीएम आंतरिक और कोड जो आप प्रोफाइल कर रहे हैं, के बारे में बहुत कुछ समझने की आवश्यकता होगी।

शुभकामनाएं!

संबंधित मुद्दे