मानक जावा कंपाइलर कुछ अनुकूलन करता है, लेकिन यह उनमें से अधिकांश को जेआईटी में छोड़ देता है।
JIT जो प्रोसेसर वास्तव में कार्यक्रम चल रहा है पर जानता है और यह भी जानकारी क्रम की पहुंच है, और इसलिए यह अधिक अनुकूलन कर सकते हैं की तुलना में जावा पहले से कर सकता है। साथ ही, अग्रिम में व्यापक अनुकूलन करने से बाइट कोड कुछ हद तक "खराब हो सकता है", जो इसे अनुकूलित करने के लिए जेआईटी के लिए कठिन बना देता है।
मैं नहीं जानता कि गूगल के संकलक जब यह Dalvik कोड करने के लिए अपने जावा बाइट कोड तब्दील हो क्या करता है - यह अधिक व्यापक अनुकूलन कर किया जा सकता है।
हो सकता है कि इस उपकरण आप के लिए उपयोगी हो सकता है: Dalvik Optimization and Verification With dexopt
वैसे, उदाहरण आप का उल्लेख हमेशा मान्य नहीं है; a/4
को a >> 2
में बदलने से आपके प्रोग्राम को किसी भी प्रोसेसर पर तेज़ी से चलाने की गारंटी नहीं है। मैंने कहीं एक बार एक लेख पढ़ा (क्षमा करें, यह अभी नहीं मिल सकता है ...) कि स्पष्ट किया कि (मुझे लगता है कि) आधुनिक x86 प्रोसेसर पर, a >> 2
भी a/4
की तुलना में धीमी हो सकती है।
किसी भी मामले में, a/4
से a >> 2
को अपने स्रोत कोड में हाथ से समय-समय पर अनुकूलन न करें, जब तक आपके पास असली सबूत (प्रदर्शन माप से) नहीं है, जो इसे करने के लिए उपयुक्त है।
डिवीजन बनाम बाएं शिफ्ट का समग्र कार्यक्रम गति पर कोई प्रभाव नहीं पड़ता है। मामूली बिट नहीं। – delnan