सीएलआर और जेवीएम में लक्ष्य और दर्शन हैं जो आपके विचार से कहीं अधिक भिन्न हैं। आम तौर पर, जेवीएम का लक्ष्य अधिक गतिशील, उच्च-स्तरीय कोड को अनुकूलित करना है, जबकि सीएलआर आपको इन प्रकार के अनुकूलन करने के लिए अधिक निम्न-स्तरीय टूल प्रदान करता है।
एक अच्छा उदाहरण स्टैक आवंटन है। सीएलआर पर आपके पास कस्टम मूल्य प्रकारों के स्पष्ट ढेर आवंटन हैं। JVM पर केवल कस्टम प्रकार संदर्भ प्रकार हैं लेकिन JVM एस्केप विश्लेषण के माध्यम से कुछ परिस्थितियों में आवंटन को ढेर करने के लिए ढेर आवंटन को परिवर्तित कर सकता है।
एक और उदाहरण। जावा में, विधियां डिफ़ॉल्ट रूप से आभासी हैं। कम से कम # सी पर, वे नहीं हैं। वर्चुअल विधि कॉल को अनुकूलित करना अधिक कठिन होता है क्योंकि दिए गए कॉल साइट पर निष्पादित कोड को स्थिर रूप से निर्धारित नहीं किया जा सकता है।
हुड के तहत, उनके निष्पादन सिस्टम काफी अलग हैं। अधिकांश जेवीएम (विशेष रूप से, हॉटस्पॉट) एक बाइटकोड दुभाषिया और कोड के केवल जेआईटी-संकलन भागों के साथ शुरू होते हैं जिन्हें भारी रूप से निष्पादित किया जाता है। तंग loops। वे ऑप्टिमाइज़ेशन ड्राइव करने के लिए पिछले रनों से एकत्र निष्पादन आंकड़ों का उपयोग करके इन्हें हर बार और फिर से संकलित कर सकते हैं। यह कार्यक्रम के उन हिस्सों पर अधिक अनुकूलन प्रयास लागू करने की अनुमति देता है जिनकी आवश्यकता है। इसे अनुकूली अनुकूलन कहा जाता है।
सीएलआर केवल एक बार ऊपर-सामने सब कुछ संकलित करता है। यह कम अनुकूलन दोनों करता है क्योंकि इसमें संकलन करने के लिए अधिक कोड है और इसलिए तेज़ होना चाहिए और क्योंकि इसके अनुकूलन में फ़ीड करने के लिए किए गए वास्तविक निष्पादन पथ का कोई आंकड़ा नहीं है। इस दृष्टिकोण में प्रक्रियाओं में संकलन परिणामों को कैश करने की अनुमति देने का बहुत महत्वपूर्ण लाभ होता है, जो सीएलआर करता है लेकिन JVM नहीं करता है।
हॉटस्पॉट जेवीएम कोड का एक बड़ा प्रतिशत इन अनुकूली अनुकूलन के लिए समर्पित है और वे 2000 के शुरुआती दशक में जावा को समान सामान्य उद्देश्य गणना के लिए मूल कोड के रूप में समान प्रदर्शन बॉलपार्क में डालते हैं। वे भी जेवीएम को गतिशील भाषाओं के लिए एक सभ्य लक्ष्य बनाते हैं। मैं यहां डायनामिक लैंग्वेज रनटाइम और इनवोकैडीनामिक के हालिया विकास को छोड़ रहा हूं क्योंकि मुझे डीएलआर के बारे में पर्याप्त जानकारी नहीं है।
मैं इस विषय का संदर्भ देने वाले विषय के साथ एक नया प्रश्न शुरू करने का सुझाव देता हूं। –