मैं एक उच्च प्रदर्शन वाले एंड्रॉइड एप्लिकेशन (एक गेम) पर काम कर रहा हूं, और हालांकि मैं पहले पठनीयता के लिए कोड करने का प्रयास करता हूं, लेकिन मैं अपने दिमाग के पीछे हुड के नीचे क्या हो रहा है की एक तस्वीर रखना चाहता हूं। सी ++ के साथ, मैंने संकलक के बारे में काफी अच्छा अंतर्ज्ञान विकसित किया है और मेरे लिए क्या नहीं करेगा। मैं जावा/एंड्रॉइड के लिए ऐसा करने की कोशिश कर रहा हूं।मैं Dalvik और एंड्रॉइड टूलचेन से कौन से अनुकूलन की उम्मीद कर सकता हूं?
इसलिए यह प्रश्न। मैं वेब पर इस विषय के बारे में बहुत कम पा सकता हूं। क्या जावा कंपाइलर, डाल्विक कनवर्टर (डीएक्स) और/या जिटर (एंड्रॉइड 2.2+ पर) निम्न जैसे अनुकूलन निष्पादित करेंगे?
विधि इनलाइनिंग। किस परिस्थितियों में?
private
विधियों को हमेशा सुरक्षित रूप से रेखांकित किया जा सकता है; क्या यह किया जाएगा?public final
विधियों के बारे में कैसे? अन्य वर्गों की वस्तुओं पर तरीके?static
विधियां? क्या होगा यदि ऑब्जेक्ट का रनटाइम प्रकार आसानी से संकलक द्वारा घटाया जा सकता है? क्या मुझे संभवतःfinal
याstatic
के रूप में विधियों को घोषित करना चाहिए?आम उप-संपीड़न उन्मूलन। उदाहरण के लिए, यदि मैं दो बार
someObject.someField
एक्सेस करता हूं, तो लुकअप केवल एक बार किया जाएगा? क्या होगा यदि यह गेटर के लिए एक कॉल है? अगर मैं कुछ अंकगणितीय अभिव्यक्ति का दो बार उपयोग करता हूं तो क्या होगा; क्या इसका मूल्यांकन केवल एक बार किया जाएगा? क्या होगा यदि मैं कुछ अभिव्यक्ति के परिणाम का उपयोग करता हूं, जिसका मूल्य मुझे बदलना नहीं है,for
लूप की ऊपरी सीमा के रूप में?सरणी लुकअप पर बाउंड की जांच। क्या टूलचैन कुछ शर्तों में इसे खत्म कर देगा, जैसे archetypical
for
लूप?मूल्य इनलाइनिंग। कुछ
public static final int
तक पहुंच जाएगा हमेशा रेखांकित किया जाएगा? भले ही वे एक और कक्षा में हों? भले ही वे किसी अन्य पैकेज में हों?शाखा भविष्यवाणी। यह भी कितना बड़ा मुद्दा है? एक ठेठ एंड्रॉइड डिवाइस पर एक बड़े प्रदर्शन हिट की शाखा है?
सरल अंकगणितीय।
someInt * 2
someInt << 1
द्वारा प्रतिस्थापित किया जाएगा?
वगैरह ...
यह उपयोगी हो सकता है: http://developer.android.com/guide/practices/design/performance.html – pablochan
ये भी उपयोगी हो सकते हैं: http://www.netmite.com/android/mydroid/dalvik/ दस्तावेज़/dexopt.html, http://www.taranfx.com/android-internals-jit-froyo, और प्रस्तुति का पीडीएफ संस्करण: http://www.android-app-developer.co.uk/android- ऐप-डेवलपमेंट-डॉक्स/एंड्रॉइड-जेट-कंपाइलर-एंड्रॉइड-दल्विक-वीएमपीडीएफ – Lior
@ पाब्लोचन: वह कुछ समय तक मेरे तकिए के नीचे रहा है, लेकिन धन्यवाद :) @Lior: अच्छे संदर्भ, वे मेरे लिए नए हैं, धन्यवाद ! – Thomas