2012-08-26 20 views
11

के प्रदर्शन का माप मैंने एक आम-लिस्प प्रोग्राम लिखा और यह धीमी गति से होने की आवश्यकता है। अब मैं अपने कोड का विश्लेषण करना चाहता हूं यह देखने के लिए कि मेरा समय कहां जा रहा है। क्या कोई उपकरण है जो लोग उपयोग करते हैं?एक सामान्य-लिस्प प्रोग्राम

उत्तर

12

यदि आप SLIME का उपयोग कर रहे हैं, तो कुछ profiling commands हैं जिनका उपयोग आप time और कार्यान्वयन विशिष्ट टूल के अलावा कर सकते हैं।

परिणाम दिखाने के लिए M-x slime-toggle-profile-fdefinition (अन) प्रोफ़ाइल विशिष्ट कार्यों, M-x slime-profile-report का उपयोग करें, और M-x slime-profile-reset रीसेट करने के लिए।

+0

यह उपयोग करना वास्तव में आसान है। धन्यवाद। – yilmazhuseyin

11

यदि आप SBCL का उपयोग कर रहे हैं, तो एक साफ सांख्यिकीय प्रोफाइलर उपलब्ध है - http://www.sbcl.org/manual/Statistical-Profiler.html

सरल माप के लिए, आप time का उपयोग कर सकते हैं, जो कि सभी सामान्य लिस्प कार्यान्वयन पर उपलब्ध है।

+0

मुझे एसबी-स्पॉफ पैकेज पसंद है। यह सभी बुलाए गए कार्यों (सिस्टम फ़ंक्शन समेत) देता है, इसके साथ मेरी समस्या यह है कि मैं वास्तव में नहीं देख सकता कि उन कार्यों में से कुछ कहां कह रहे हैं। क्या सामान्य लिस्प में कोई लाइन-बाय-लाइन प्रोफाइलर कार्यान्वयन है, (कुछ पाइथन memmory प्रोफाइलर जैसे https://github.com/fabianp/memory_profiler) यहां एक नमूना पायथन कोड है और इसके memmory_profiler परिणाम https: //gist.github .com/3,235,444। इस के साथ मैं अनुक्रम प्रकार बदल सकता हूं और memmory परिणाम देख सकते हैं। यह बोल्टनेक्स को बाहर नहीं दिखाता है लेकिन यह टाइप संबंधित समस्याओं को खोजने के लिए बहुत अच्छा है। – yilmazhuseyin

+0

इसके अलावा, यदि आप एसबीसीएल का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप एक फ़ाइल (या पूर्ण सिस्टम) संकलन करते हैं और संकलक नोट्स की पूरी तरह से पढ़ते हैं। वहां शायद कुछ दक्षता नोट्स हैं। – Vatine

+0

@ यिलमाज़ुसेन एसबीसीएल में एक [निर्धारक प्रोफाइलर] भी है (http://www.sbcl.org/manual/Deterministic-Profiler.html#Deterministic-Profiler), लेकिन यह अभी भी कार्य उन्मुख है, रेखा उन्मुख नहीं है (इसका उपयोग नहीं किया है)। यह देखने के लिए कि कौन सा फ़ंक्शन कॉल करता है, आप फ़ंक्शन नाम पर एसएलआईएमई के 'सीसी सीडब्ल्यू सी' का उपयोग कर सकते हैं (एसएलआईएमईई में कई उपयोगी [क्रॉस रेफरेंस कमांड] हैं (http://common-lisp.net/project/slime/doc/html/ Cross_002dreference.html))। –

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