2010-09-29 10 views
13

सी और लिस्प अनुकूलित करने की कोशिश में, संकलक द्वारा कोडांतरक कोड उत्पादन को देखकर एक बहुत मदद कर सकते हैं।क्लोजर फ़ंक्शन के लिए मैं JVM बाइटकोड की जांच कैसे कर सकता हूं?

Clojure शायद एक JVM बाईटकोड कि समान रूप से मददगार होगा करने के लिए संकलित करता है।

मैं इसे कैसे देखते हैं?

+4

कृपया ध्यान रखें कि बाईटकोड के अनुकूलन वास्तव में किसी भी सकारात्मक परिणाम नहीं हो सकता है हो सकता है। [यह साक्षात्कार] देखें (http://java.sun.com/developer/technicalArticles/Interviews/goetz_qa.html#CodePerformsWell)। यह जावा लिखने के बारे में बात करता है, लेकिन यह मूल रूप से बाइटकोड उत्पन्न करने वाली सभी भाषाओं पर लागू होता है। –

उत्तर

11

Clojure गतिशील रनटाइम पर बाईटकोड करने के लिए सभी Clojure कोड संकलित करता है। मुझे यकीन नहीं है कि आप इस गतिशील रूप से संकलित बाइटकोड को कैसे देख सकते हैं। हालांकि, अगर आप का समय (AOT) अपने Clojure खुद के कोड का संकलन आगे क्या कर सकते हैं और फ़ाइलें .class उत्पन्न होगा। फिर आप बाइटकोड देखने के लिए javap का उपयोग कर सकते हैं।

अपने नाम स्थान को संकलित करने के Clojure/कोर में compile समारोह का उपयोग करें:

संकलन समारोह

उपयोग: (lib संकलन)

एक में नाम स्थान प्रतीक lib द्वारा नाम संकलित क्लासफाइल्स का सेट। Lib के लिए स्रोत उचित क्लासपाथ-सापेक्ष निर्देशिका में होना चाहिए। आउटपुट फाइलों निर्देशिका संकलन-पथ द्वारा निर्दिष्ट में जाना जाएगा, और कहा कि निर्देशिका भी classpath में होना चाहिए।

फिर javap का उपयोग करें:

javap -l -c -s -private MyClass 
+0

स्वीट! आपका बहुत बहुत धन्यवाद। –

+1

ध्यान दें कि आपको .class एक्सटेंशन को छोड़ना है। मुझे एक मिनट या उससे भी ज्यादा समय तक भ्रमित कर दिया। –

3

कुछ हाथ से बनाया समाधान:

+1

क्या मैं पूछ सकता हूं कि डाउन-वोट क्यों? जहां तक ​​मुझे पता है, ये संकलित वर्ग फ़ाइलों के बाइटकोड की जांच कैसे करें, इस पर वैध उत्तर हैं, इसलिए वे क्लोजर के लिए प्रासंगिक हैं। शायद एक और क्लोजर-वाई रास्ता है, लेकिन यह अभी भी काम करता है। अगर मैं कुछ कह रहा हूं तो गलत है, कृपया मुझे बताएं कि क्यों और क्यों। – haylem

+4

मुझे संदेह है कि आप नीचे मतदान कर चुके थे क्योंकि आपने कहा था "Google इसे"।एसओ पर यह सामान्य ज्ञान है कि किसी भी तरह से पूछे जाने वाले और गंभीर सवाल से पहले पूछा नहीं गया है कि पूछने के लिए एक अच्छा सवाल है। एसओ के लिए Google परिणामों का हिस्सा होना विचार है। – Rayne

+0

आह। यह काफी उचित लगता है, हालांकि मेरा मतलब यह नहीं था कि ओपी को डालने और उसके हिस्से पर आलसीपन के रूप में इसका मतलब यह न हो कि यह अच्छे परिणामों के साथ कालातीत उत्तरों प्रदान करता है क्योंकि यह जेवीएम भाषाओं के लिए काफी आम सवाल है। मेरा बुरा, मैं अगली बार बेहतर करूँगा। – haylem

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