2010-06-04 11 views
40

क्या किसी को क्लोजर के लिए एक अच्छा प्रोफाइलिंग टूल या लाइब्रेरी पता है?प्रोफाइलिंग उपकरण?

मैं कुछ ऐसा पसंद करूंगा जो आरईपीएल से (with-profiling ...) के साथ दिन में वापस एलेग्रो कॉमन लिस्प में उपयोग किया जा सके।

क्या उन पंक्तियों के साथ कुछ भी है?

या क्या आपके पास क्लोजर के साथ अच्छी तरह से काम करने वाले (गैर-वाणिज्यिक) जावा प्रोफाइलर्स के साथ कोई अनुभव है?

उत्तर

28

मुझे विजुअलVM मिली (here और here देखें) बहुत सुविधाजनक होने के लिए। क्लोजर के साथ इसका उपयोग एक साल पहले this blog post में वर्णित किया गया है; जहां तक ​​मैं देख सकता हूं, यह किसी भी तरह से पुराना नहीं है।

ध्यान दें कि जिस GUI से विजुअलVM प्रोफाइलर शुरू होता है, उसमें एक प्रमुख टेक्स्ट क्षेत्र होता है जहां कोई कक्षा/पैकेज को प्रोफाइलिंग से बाहर करने के लिए प्रवेश कर सकता है - मुझे clojure.* उस सूची में परिणाम अधिक उपयोगी लगता है।

+0

सूचक के लिए धन्यवाद की तरह JVM उपकरणों के साथ एक comparison भी शामिल है। मॉनिटर भाग - हीप मेमोरी और सीपीयू उपयोग - आसान है। लेकिन मैं सीपीयू प्रोफाइलर से कुछ भी उपयोगी होने के साथ संघर्ष कर रहा हूं। प्रोजेक्ट यूलर समस्या के समाधान का प्रोफाइलिंग करते हुए, मेरे कोड का शीर्ष योगदानकर्ता कई मिनट रनटाइम से 300ms है ... क्या कोई ऐसा चीज है जो "स्वयं समय" (टाइम टाइम "के बजाय विधि" कुल समय "(कॉल स्टैक पर व्यतीत समय) देता है कॉल स्टैक के शीर्ष पर खर्च किया)? –

+0

वास्तव में उस पर एक सवाल है, http://stackoverflow.com/questions/1892038/total-method-time-in-java-visualvm - प्रोफाइलिंग परिणामों का एक स्नैपशॉट लेने की सलाह और विश्लेषण करना अच्छा है, जो आपको कुल विधि समय के साथ एक अच्छा "कॉल ट्री" दृश्य देता है। ध्यान में रखने के लिए एक और बात यह है कि यह एक ऐसा स्थान है जहां सिंगल-सेगमेंट नेमस्पेस एक समस्या हो सकती है (AFAICT जो हालिया प्रोफाइलिंग सत्र में "अदृश्य" होने का कारण था, जिसे मैंने #clojure में लाइसेंसधारक के साथ आयोजित किया था) हालांकि मैं वादा नहीं करूंगा कि वे आपके विशेष मामले में चीजें तोड़ देंगे। ;-) –

+0

मैं आपका जवाब स्वीकार करूंगा :) मैं जो कुछ भी ढूंढ रहा था वह काफी नहीं था, लेकिन ऐसा लगता है कि यह निकटतम उपलब्ध है। धन्यवाद। –

9

बस profile in Clojure contrib मिला।

यह बड़ी मात्रा में कोड के लिए काम नहीं करता है (यह प्रोजेक्ट यूलर समाधान पर आउटऑफमेमरी एरर के साथ उड़ाया गया है, जिसे विजुअलVM ने ठीक से संभाला है) और इसके लिए आपको उन कार्यों में प्रोफाइलिंग कॉल डालने की आवश्यकता है, जिन्हें आप प्रोफाइल करना चाहते हैं।

फिर भी, यह उन मामलों में VisualVM का बेहतर विकल्प है जहां आप केवल कुछ फ़ंक्शन प्रोफाइल करना चाहते हैं। https://github.com/ptaoussanis/timbre

+2

यह अब अप्रचलित है। –

14

एक काफ़ी नया Clojure पुस्तकालय जो रूपरेखा प्रदान करता है नहीं है।

मूल रूप से टिम्बेर और समर्पित दस्तावेज़ों की सामग्री का परिशोधन है।

README VisualVM, YourKit, आदि

+1

यह एक काम करता है। –

+0

मैं इसे VisualVM पर पसंद करता हूं, क्योंकि इसका उपयोग करने और नियंत्रण के लिए हल्के वजन है। –

+0

ऐसा लगता है कि केवल क्लोजरस्क्रिप्ट के लिए प्रोफाइलिंग प्रदान करना है। –

3

त्वरित सिर-अप है कि मैं https://github.com/ptaoussanis/tufte में एक नया समर्पित Clojure + ClojureScript रूपरेखा lib के लिए लय के रूपरेखा पदावनत किया है:

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