2008-10-28 11 views
7

लॉगिंग से अलग प्रोफाइलिंग कैसे हो रही है?लॉगिंग से अलग प्रोफाइलिंग कैसे हो रही है?

क्या यह केवल प्रोफाइलिंग के लिए प्रोफाइलिंग का उपयोग किया जाता है यह देखने के लिए कि प्रत्येक कार्य कितना समय लगता है? या मैं बंद हूँ?

आमतौर पर, प्रोफाइलिंग पुस्तकालयों का उपयोग कैसे किया जाता है?

प्रोफाइलिंग के आधार पर किस प्रकार के आंकड़े प्राप्त किए जाते हैं?

उत्तर

20

लॉगिंग आपको बताता है कि हुआ। यह फोरेंसिक और डिबगिंग के लिए बहुत अच्छा है।

प्रोफाइलिंग यह बताती है कि: यह आपको बताता है कि प्रत्येक क्षेत्र में आपका कोड कितना समय बिताया गया है, या कोड के शरीर को कितनी बार निष्पादित किया गया था। यह आपको अपने कोड के प्रदर्शन को बेहतर बनाने में मदद करता है।

प्रोफाइलिंग आम तौर पर कोड की एक पंक्ति, एक फ़ंक्शन कॉल, या कभी-कभी फ़ाइल के स्तर पर संचालित होती है। प्रत्येक स्तर के लिए, यह आम तौर पर आप बता सकते हैं:

  • इकाई कितनी बार मार डाला गया था। लाखों बार निष्पादित कोड की तुलना में शायद ही कभी इस्तेमाल किए गए कोड को अनुकूलित करना आम तौर पर कम महत्वपूर्ण होता है। एक अपवाद कोड है जो उपयोगकर्ता (या दूसरी प्रक्रिया) को पूरा करने के लिए प्रतीक्षा करता है।

  • कितनी बार एक शाखा लिया गया था, एक if या switch बयान में कहते हैं। फिर, आप आम तौर पर अक्सर इस्तेमाल किए गए कोड को अनुकूलित करने के बारे में अधिकतर परवाह करते हैं।

  • कितना समय एक विशेष समारोह में खर्च किया गया था। चेतावनी: अनुभवी डेवलपर्स भी इन परिणामों से अक्सर आश्चर्यचकित होते हैं। भविष्यवाणी करना बहुत मुश्किल है कि आपका "समय सिंक" कहां है।

  • समय कितना एक समारोह में खर्च किया गया था और सभी कार्यों कि समारोह भीतर बुलाया। हो सकता है कि यह कार्य स्वयं ही न हो, लेकिन इसके बच्चे, जिन्हें अनुकूलित करने की आवश्यकता है।

  • कितनी बार इकाई प्रत्येक फोन करने वाले द्वारा बुलाया गया था।आप पाते हैं कि एक विशेष कार्य मुख्य रूप से एक अप्रत्याशित स्थान से कहा जाता है।

एक अच्छे प्रोफाइलर से डेटा के साथ सशस्त्र, आप अक्सर अपेक्षाकृत कम प्रयास के साथ प्रदर्शन में महत्वपूर्ण सुधार प्राप्त कर सकते हैं।

1

मैं प्रदर्शन माप के रूप में प्रोफाइलिंग देखता हूं, और आपको कोड के हर टुकड़े को प्रोफ़ाइल करने की आवश्यकता नहीं है, कभी-कभी विशिष्ट क्षेत्रों को लक्षित करना बेहतर होता है।

लॉगिंग बाद के उपयोग के लिए जानकारी संग्रहीत कर रहा है, जानकारी जो प्रोफाइलिंग से संबंधित हो सकती है लेकिन जरूरी नहीं है। यह सिर्फ लॉग इन होना चाहिए कि क्या हुआ।

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

1

लॉगिंग रिकॉर्डिंग है कि ऑडिटिंग या समस्या निवारण के उद्देश्य से क्या किया जाता है। प्रोफाइलिंग, मैं कहूंगा, प्रदर्शन का अनुमान लगाने की तकनीक है। प्रोफाइलिंग मीट्रिक लॉगिंग करके प्रोफाइलिंग किया जा सकता है, या यह सिस्टम के राज्य की जांच करने के लिए विशेष उपकरण या उपयोगिताओं का उपयोग करके किया जा सकता है।

2

प्रोफाइलिंग का उपयोग प्रोग्राम की रन टाइम दक्षता निर्धारित करने के लिए किया जाता है। इसका उपयोग स्मृति उपयोग या सीपीयू उपयोग को मापने के लिए किया जा सकता है। आप इसे अपने कोड को अनुकूलित करने के लिए उपयोग कर सकते हैं।

दूसरी तरफ लॉगिंग एक ऑडिटिंग फ़ंक्शन है। आप देखना चाहते हैं कि कार्यक्रम चलने के दौरान क्या किया गया था। यह प्रदर्शन की तुलना में डीबगिंग के लिए अधिक उपयोग किया जाता है।

1

लॉग बयान आमतौर पर स्रोत कोड अपने आप में लिखे गए हैं, जबकि profiling साथ आप कोड को संशोधित कर सकते हैं के बाद यह संकलित और एक रूपरेखा सत्र के लिए तो और केवल instrumented है है (यानी, वहाँ में कोई रूपरेखा कोड मौजूद है किसी भी निर्माण के लिए खुद का कथन।) और वास्तविक समय में गेज प्रदर्शन या यह नमूना हो सकता है ताकि यह कम दानेदार लेकिन कम घुसपैठ के तरीके पर प्रदर्शन को ट्रैक कर सके।

3

प्रोफाइलिंग फ़ंक्शन/विधि कॉल के संबंध में प्रदर्शन निर्धारित करने के बारे में है, उदा।

  • समय कार्यों में खर्च
  • समय कार्यों में खर्च + समय बच्चे कार्यों में खर्च
  • किए जाने की संख्या विशेष कार्य कहा जाता है

रूपरेखा के पूरे विचार एक अच्छा सिंहावलोकन हो रही है एक प्रणाली का निर्धारण यह निर्धारित करने के लिए कि अनुकूलन कहाँ किया जा सकता है। यदि आपको पता है कि किसी विशेष फ़ंक्शन को दूसरे सबसे अधिक ज्ञात फ़ंक्शन से 20 गुना अधिक कहा जाता है, तो आप जानते हैं कि अपने अनुकूलन प्रयासों को कब ध्यान केंद्रित करना है।

यह आपको यह भी दिखाता है कि आपके समय बिताने के लिए कहां दिखाता है। आप एक फ़ंक्शन को अनुकूलित करने के लिए एक दिन बिताना नहीं चाहते हैं जिसे केवल प्रति घंटे कहा जाता है। आप उन कार्यों को अनुकूलित करने पर अपना समय केंद्रित करना चाहते हैं जिन्हें प्रति सेकंड कहा जाता है।

मेरी समझ में लॉगिंग, केवल जो कहा गया है उसका ट्रैक रख रहा है (लेकिन प्रत्येक कॉल से जुड़े विस्तृत मेटाडेटा के बिना)।

प्रोफाइलिंग इकट्ठा करने के लिए कोड को वाद्ययंत्र द्वारा तर्कसंगत मात्रात्मक कार्य जैसे प्रोफाइलिंग लाइब्रेरी जैसे प्रोफाइल चलाना। इसका एक प्रभावशाली प्रदर्शन प्रभाव होगा, लेकिन यह सिस्टम भर में सापेक्ष होगा।

1

लॉगिंग आपको बताता है कि कई प्रश्न जो आपने stackoverflow पर पोस्ट किए हैं।

रूपरेखा आपको बताता है कि लंबे यह प्रत्येक प्रश्न पोस्ट करने के लिए लेता है, और कैसे अपने कार्यदिवस के ज्यादा तुम यहाँ खर्च करते हैं।

1

पिछले उत्तरों सही हैं।

हालांकि, आईएमएचओ, प्रोफाइलर बंदूकों की तुलना में अधिक धूम्रपान करते हैं, और मुझे लगता है कि इससे कुछ तीरों पर क्लिक करने का कारण बनता है।

यदि आप जानना चाहते हैं कि फ़ंक्शन कितना समय ज़िम्मेदार है, तो आपको यह जानना होगा कि इसे कितनी बार कहा जाता है और इसे कब तक कहा जाता है। इनमें से एक दूसरे के बिना बेकार है।

भले ही यह आपको दोनों बताता है, यह आपको नहीं बताता कि समारोह के अंदर कौन से बयान जिम्मेदार हैं। वे आपको बहुत सी चीजें बताते हैं, जैसे एनोटेटेड कॉल ग्राफ़ और व्हाट्नॉट, लेकिन यह अभी भी बहुत से संकेतों के रूप में है जिसे आपको पहेली करना है, जिससे आपके अनुमानों को और अधिक "सूचित" किया जा सकता है।

फिर वे इस बात के बारे में बात करते हैं कि आंकड़े "सटीक" कैसे हैं। एक अच्छी प्रस्तुति बनाता है, लेकिन समस्या को नाखुश नहीं करता है।

क्या वे सकता है है (और वे नहीं है) विशेष रूप से बयान या निर्देश पर बिंदु और कहते हैं

यह सटीक बयान यहीं, यदि आप इसे से छुटकारा पाने सकता है, आप एक्स की बचत होगी है कुल निष्पादन समय का%।

और एक्स

द्वारा उन सॉर्ट तुम सच में एक प्रदर्शन समस्या को ठीक करने की जरूरत है, कि तुम क्या जरूरत है, और आप आसानी से इसे अपने आप को मिल सकता है। यहाँ देखो:
                How to Optimize your Program's Performance

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