2011-07-07 9 views
6

मैं यहोशू बलोच के प्रभावी जावा, Item 52: Refer to objects by their interfaces द्वारा दिए गए सलाह करने के लिए उपयोग में अपने इंटरफेस द्वारा वस्तुओं देखना चाहिए।हमने Android प्लेटफ़ॉर्म

हालांकि, नमूना कोड के अधिकांश में एंड्रॉयड के साथ आता है, मुझे पता है निम्नलिखित कोड काफी आम है।

private ArrayList<Integer> mPhotos = new ArrayList<Integer>(); 

मैं समझता हूँ कि इस प्रदर्शन के अनुकूलन उद्देश्य की वजह से है, के रूप में निम्न कोड में धीमी हो जाएगा।

private List<Integer> mPhotos = new ArrayList<Integer>(); 

हालांकि, क्या ऐसी अनुकूलन तकनीक अभी भी वैध है? के रूप में अगर मैं एक JIT बिना http://developer.android.com/guide/practices/design/performance.html

से पढ़ने के उपकरणों पर, यह सच है कि एक सटीक प्रकार के बजाय एक इंटरफेस के साथ एक चर के माध्यम से तरीकों लागू थोड़ा और अधिक कुशल है। (इसलिए, उदाहरण के लिए, मानचित्र मानचित्र की तुलना में हैश मैप मानचित्र पर विधियों को आमंत्रित करना सस्ता था, भले ही दोनों स्थितियों में नक्शा एक हैश मैप था।) ऐसा नहीं था कि यह 2x धीमी थी; वास्तविक अंतर 6% धीमी गति से अधिक था। इसके अलावा, जेआईटी दो प्रभावी ढंग से अलग करने योग्य बनाता है।

हम अपने उपकरणों मान JIT बिना कर रहे हैं, और इंटरफेस के बिना वस्तुओं का उल्लेख करने की जरूरत है? या, क्या हम सिर्फ यहोशू ब्लोच की सलाह को अपनाएंगे?

उत्तर

2

Android 2.2 के रूप में, Dalvik वी एम (कि Dalvik बाईटकोड अपने जावा स्रोत कोड का परिणाम है कि चलाता है) एक जस्ट-इन-टाइम संकलक (JIT) है।

अगर इस विशेष अनुकूलन JIT या नहीं का हिस्सा है मैं नहीं जानता, लेकिन यह वास्तविक उपकरणों पर परीक्षण योग्य होना चाहिए।

हैं आप पूर्व 2.2 उपकरण और मंगलाचरण में उन 6% ओवरहेड को लक्ष्य (जो आपके आवेदन की एक overal 6% मंदी साथ भ्रमित होने की नहीं है!), आपके आवेदन पर एक गंभीर प्रभाव पड़ता है तो वह अनुकूलन सार्थक हो सकता है।

-3
private ArrayList<Integer> mPhotos = new ArrayList<Integer>(); 

यह प्रदर्शन कारण से परे, पसंदीदा है। यह एक निजी चर है, ज्ञात सबसे विशिष्ट प्रकार का उपयोग करें।

+0

कारण ठोस नहीं है। निजी चर के साथ इसका कोई लेना-देना नहीं था। जोशुआ ब्लोच द्वारा प्रदान किया गया उदाहरण भी निजी है। –

+0

तो यहोशू ब्लोच गलत है। – irreputable

+2

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

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