2013-02-13 36 views
5

मैं xdebug को एक्स एमएस या वाई केबी रैम से अधिक "कूदता" का पता लगाने के लिए चाहता हूं, उदाहरण के लिए, 100 एमबी से अधिक समय तक 100 मिलीमीटर से अधिक समय तक चलने वाले प्रत्येक निष्पादन या स्मृति उपयोग में वृद्धि। इससे मुझे हजारों ट्रेस लाइनों को अनदेखा कर दिया जाएगा जिन्हें मुझे देखने की आवश्यकता नहीं है और ऑप्टिमाइज़ेशन को अधिक आसान बना दिया जाएगा - जैसा कि है, जेडएफ 2 में, ब्लोटेड फ्रेमवर्क हमारे एंटरप्राइज़ प्रोजेक्ट पर संगीतकार ऑटोलोडर के साथ शुरू करने के लिए केवल 1 सेकंड लेता है, जिसके परिणामस्वरूप हजारों लाइनों में मेरे पास वास्तव में कोई उपयोग नहीं है। लाइन के साथ कहीं मुझे निष्पादन समय में बड़ा कूद मिलता है, लेकिन स्क्रॉलिंग के लंबे समय के बाद नहीं।xdebug के साथ एक्स की तुलना में केवल धीमे निष्पादन लॉग करने का कोई तरीका है?

क्या "एक्स से तेज़" निष्पादन के लॉगिंग को अक्षम करने का कोई डिफ़ॉल्ट विकल्प है, या यदि नहीं, तो क्या आप एक सहायक शेल/पायथन स्क्रिप्ट के बारे में जानते हैं जो धीमे लोगों को बाहर कर सकता है?

स्पष्टीकरण के लिए, मैं अपने ऐप में xdebug_start_trace() चलाकर प्राप्त .xt फ़ाइल की सामग्री के बारे में बात कर रहा हूं।

+0

आप 'xdebug.trace_ *' द्वारा उत्पन्न आउटपुट के बारे में बात कर रहे हैं, है ना? –

+0

अच्छा सवाल, जवाब भी जानना चाहेंगे – Haensel

+0

@FAngel मुख्य प्रश्न – Swader

उत्तर

1

मुझे ऐसे विकल्पों के बारे में कुछ नहीं पता है, लेकिन मैं सुझाव दे सकता हूं कि ट्रेस के बजाय प्रोफ़ाइल का उपयोग करना है।

Here एक लेख है कि आप इसका उपयोग कैसे कर सकते हैं।

xdebug.profiler_enable = 0 
xdebug.profiler_enable_trigger = 1 
xdebug.profiler_output_dir="c:\Projects" 

और जब आप प्रोफाइलर, क्वेरी पैरामीटर के साथ चलाने के यूआरएल शुरू करना चाहते ?XDEBUG_PROFILE=1

यह cachegrind.out.* और जगह की तरह नाम के साथ एक फ़ाइल का उत्पादन करेगा: कम हैं, तो अपने php.ini फ़ाइल में ये पंक्तियां जगह यह profiler_output_dir में है।

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

+0

धन्यवाद, मैंने अभी वेबग्रैंड के साथ कैशगिंग का विश्लेषण करने का प्रयास किया है, लेकिन ये परिणाम मेरे लिए बेकार हैं। मान "कुल कॉल लागत" और "कुल समावेशी लागत" पूरी तरह से अप्रासंगिक हैं, क्योंकि मैं प्रवाह नहीं देख सकता और बड़े कूद और रोडबंप की पहचान नहीं कर सकता - उदाहरण के लिए, function1() एक संदर्भ में 0.003s ले सकता है, और एक दूसरे में 1.3s - ये निशान इस प्रतिबिंबित नहीं करते हैं। इसलिए मैं प्रदर्शन कूद द्वारा ट्रेस आउटपुट फ़िल्टर क्यों करना चाहता हूं। – Swader

+1

एचएम। निश्चित नहीं है कि मैं पूरी तरह समझता हूं कि आपका क्या मतलब है, लेकिन Wincachegrind में यदि आप फ़ंक्शन पर राइट क्लिक करते हैं तो समग्र मेनू आइटम दिखाया जाता है। समग्र पैनल में यह प्रत्येक फ़ंक्शन, कॉलर फ़ंक्शन और फ़ाइल के समय के साथ उस फ़ंक्शन की सभी कॉल दिखाता है। इसके अलावा, मैंने वेब के चारों ओर देखा है और PHP में लिखे गए ट्रेस आउटपुट विज़ुअलाइज़र हैं। उनको कभी भी इस्तेमाल नहीं किया, लेकिन संभवतः आप उन्हें सहायक पाएंगे। –

+1

[यहां] (http://stackoverflow.com/q/1456395/1558311) SO पर एक प्रश्न है जहां मैंने आउटपुट व्यूअर को ट्रेस करने के लिए कुछ लिंक देखे। –