gprof (here's the paper) विश्वसनीय है, लेकिन यह only was ever intended to measure changes, और यहां तक कि के लिए, यह केवल सीपीयू बाध्य मुद्दों को मापता है। समस्याओं का पता लगाने के लिए इसे कभी भी उपयोगी नहीं किया गया था। यह एक विचार है कि अन्य लोग इसके शीर्ष पर स्तरित हैं।
this method पर विचार करें।
एक और अच्छा विकल्प, यदि आपको कुछ पैसे खर्च करने में कोई फर्क नहीं पड़ता है, तो Zoom है।
जोड़ा गया: यदि मैं आपको सिर्फ एक उदाहरण दे सकता हूं। मान लीजिए आप एक कॉल-पदानुक्रम जहां मुख्य कॉल कई बार कुछ संख्या है, एक कॉल बी समय की कुछ संख्या, बी सी कॉल के समय की कुछ संख्या, और सी सॉकेट या फ़ाइल के साथ कुछ आई/ओ के लिए इंतजार कर रहा है, और कहा कि मूल रूप से सब है कार्यक्रम करता है अब, आगे मान लीजिए कि प्रत्येक दिनचर्या प्रत्येक बार कॉल करने की संख्या को वास्तव में 25% अधिक बार की आवश्यकता होती है। के बारे में 2, इसका मतलब है कि पूरे कार्यक्रम के रूप में यह वास्तव में करने की जरूरत है चलाने के लिए दो बार के रूप में लंबे समय लेता है के बाद से 1.25^3 है।
पहली जगह में, के बाद से हर समय मैं/हे gprof आप, कैसे उस समय खर्च किया जाता है के बारे में कुछ भी नहीं बता देंगे के लिए है क्योंकि यह केवल "running" समय पर लग रहा है इंतज़ार कर खर्च किया जाता है।
दूसरा, मान लीजिए (केवल तर्क के लिए) आई/ओ समय की गणना करता है। यह आपको एक कॉल ग्राफ दे सकता है, मूल रूप से कह रहा है कि प्रत्येक दिनचर्या 100% समय लेती है। उसकी ओर से तुमसे क्या कहा जाता है? आप पहले से ही कुछ भी नहीं जानते हैं।
हालांकि, अगर आप ढेर नमूने की एक छोटी संख्या ले, आप उनमें से हर एक पर कोड की लाइनों देखेंगे जहां प्रत्येक दिनचर्या कॉल अगले। दूसरे शब्दों में, यह सिर्फ आप एक मोटा प्रतिशत समय का अनुमान दे रही है नहीं है, यह है कि महंगा हैं कोड के विशिष्ट लाइनों पर आप की ओर इशारा करते है। आप कोड की प्रत्येक पंक्ति को देख सकते हैं और पूछ सकते हैं कि कम समय में ऐसा करने का कोई तरीका है या नहीं। मान लीजिए कि आप ऐसा करते हैं, आपको 2 स्पीडअप का कारक मिल जाएगा।
लोगों को इस तरह के बड़े कारक मिलते हैं। मेरे अनुभव में, कॉल स्तर की संख्या आसानी से 30 या अधिक हो सकती है। प्रत्येक कॉल आवश्यक है, जब तक कि आप पूछें कि इससे बचा जा सकता है या नहीं। यहां तक कि बचने योग्य कॉल की छोटी संख्या भी कई परतों पर एक बड़ा प्रभाव डाल सकती है।
मुझे लगता है कि आप भी अपने मंच का उल्लेख करना चाहिए कि: ओएस, संकलक, gprof संस्करण आदि –
मैं इस लेख पाया: http://unix.derkeiler.com/Newsgroups/comp.unix: शायद यह कुछ उपयोग की है .programmer/2004-03/0938.html – LoudNPossiblyWrong
क्या आपने प्रोफ़ाइल पर valgrind/kcachegrind का उपयोग करने का प्रयास किया है? मैं इसे gprof पसंद करते हैं। –