android - Will java compiler optimize a method call on a final static variable ? And what happens when it becomes dalvik code? -
मेरे पास निम्न कोड है
float square (float val) {return val * val ;} बूलियन isInCircle (अंतिम फ्लोट एक्स, अंतिम फ्लोट y) {फ्लोट वर्गडस्टेंस = स्क्वायर (सीएक्स - एक्स) + स्क्वायर (cy - y); वापसी वर्गडिस्टंस & lt; वर्ग (RADIUS); } जहां RADIUS एक स्थिर अंतिम फ्लोट है। क्या जावा कंपाइलर कॉल वर्ग (रैडीस) का अनुकूलन करेगा? क्या होता है जब यह dalvik कोड android के लिए परिवर्तित हो जाता है? क्या यह अनुकूलित हो जाएगा?
जावा में अनुकूलन रनटाइम पर (जहाँ तक मुझे पता है) किया जाता है (मशीन कोड में अनुवादित किए जाने पर बाइटकोड अनुकूलित किया जाता है)। तो इसका उत्तर हां और नहीं है।
परिवर्तित कोड समान रूप से अनुकूलित किया जाएगा, लेकिन यह JVM पर निर्भर करता है, इसके साथ क्या होगा। मेरे अनुभव के मुताबिक, यह बहुत ही JVM पर निर्भर है और शायद इसकी सेटिंग (अनुकूलक की उत्तेजना) में है। मैंने SHA1 के लूप के साथ चलने की तुलना करने की कोशिश की है और बिना Windows JVM और Linux के एक के। एक मामले में लूप के बिना कोड कई गुना तेज होता था, दूसरे में (मैं लिनक्स पर सोचता था) केवल 40% समय के बीच अंतर होता है ...
तो यह एक जादू है, तो आप होस्टिंग के लिए हॉटस्पॉट अच्छा संकेत दे सकता है, या जेवीएम को कॉन्फ़िगर कर सकता है, लेकिन फिर भी, यह JVM के वर्तमान एल्गोरिदम पर निर्भर करेगा ...
Comments
Post a Comment