2011-06-30 22 views
5

जब आप अपने कोड से प्रदर्शन के आखिरी बिट को निचोड़ना चाहते हैं, तो आप जेआईटी ऑप्टिमाइज़ेशन को जितना संभव हो उतना सर्वोत्तम उपयोग करना चाहेंगे। उदाहरण के लिए, आसान विधि इनलाइनिंग के लिए विधि अंतिम चिह्नित करना, महत्वपूर्ण स्थानों में बहुरूपता से बचें,जावा जेआईटी अनुकूलन अनुकूल कोड कैसे लिखें?

लेकिन मुझे कोई संदर्भ या विकल्पों की सूची नहीं मिली जो जावा प्रोग्रामर तेजी से जेआईटी कंपाइलर को 'संकेत' के लिए उपयोग कर सकता है कोड? क्या हमारे पास जेआईटी से कम विलंबता प्रदर्शन के लिए 'सर्वश्रेष्ठ प्रोग्रामिंग' अभ्यास की सूची नहीं होनी चाहिए?

+0

आपके प्रश्न का उत्तर नहीं है, लेकिन यदि आप उच्च प्रदर्शन जावा में रुचि रखते हैं, तो आपको छोटी-छोटी [fastutil] (http://fastutil.dsi.unimi.it/) लाइब्रेरी में रुचि हो सकती है। यह संग्रह ढांचे का एक उच्च प्रदर्शन विस्तार है। –

+0

क्या आप स्पष्ट कर सकते हैं कि आप इसमें रुचि क्यों रखते हैं? क्या आपके पास प्रदर्शन समस्या है? या यह पूरी तरह अकादमिक है? :-) – drekka

+0

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

उत्तर

7

हॉटस्पॉट लेखकों और अन्य ने बार-बार कहा है कि सबसे अच्छा तरीका सरल सरल कोड लिखना है।

+1

+1: जेआईटी सामान्य पैटर्न की तलाश में है, यह जानता है कि अनुकूलित कैसे करें। यदि आप असामान्य संरचनाओं के साथ भ्रमित कोड या कोड लिखते हैं, तो यह जेआईटी को भ्रमित कर देगा (जो आसानी से किया जाता है, यह सिर्फ एक प्रोग्राम है) और यह कोड को अनुकूलित भी नहीं करेगा। –

10

जेआईटी-अनुकूल कोड लिखने का सबसे अच्छा तरीका सीधे, सरल कोड लिखना है क्योंकि जेआईटी यही देखता है और अनुकूलित करने के बारे में जानता है। कोई चाल नहीं!

इसके अलावा अलग-अलग जेवीएम के पास अलग-अलग जेआईटी हैं, इसलिए यह सुनिश्चित करने के लिए कि आपका कोड उन सभी के साथ अच्छा काम करता है, आपको उनमें से किसी पर भरोसा नहीं करना चाहिए।

जेआईटी-प्रदर्शन में सुधार करने का सामान्य तरीका JVM की बाहरी कॉन्फ़िगरेशन के माध्यम से है। चूंकि अधिकांश जेवीएम इन दिनों जानते हैं कि कोड को सरल तरीके से कॉल करने के तरीके को कैसे रेखांकित किया जाए, अधिकांश प्रदर्शन लाभ कचरा कलेक्टर को कॉन्फ़िगर करने से आते हैं। एकत्रित करते समय अपने प्रोग्राम को रोकने से बचने के लिए यहां बहुत अधिक प्रयास किया जाता है, और अंतर्निहित हार्डवेयर को कॉन्फ़िगर किया गया है और दूसरों की तुलना में बेहतर काम करने के तरीके के बारे में आप अपने ज्ञान के साथ काफी कुछ कर सकते हैं। लेकिन जावा कोड नहीं, इसे सीधे और सरल होना चाहिए।

+2

मैं "जावा टेक्नोलॉजी परफॉर्मेंस मिथ्स एक्सपोज़ड" जावा के लिए स्लाइड या पीडीएफ खोजने की कोशिश करता हूं, क्लिफ क्लिक (हॉटस्पॉट हैकर, एक्स-सन, थोड़ी देर के लिए अज़ुल सिस्टम्स में)। उनके [ब्लॉग] (http://www.azulsystems.com/blog/) में हमेशा दिलचस्प जेवीएम आंतरिक चर्चाएं होती हैं। और, बीटीडब्ल्यू, "इनलाइनिंग" ऑप्टिमाइज़ेशन के साथ मदद करने के लिए अंतिम तरीके बनाएं "सिर्फ एक मिथक है। – vanza

+0

@vanza अच्छी तरह से स्लाइड खोजने के लिए बहुत मुश्किल हैं। लेकिन अंतिम विधि का कम से कम एक फायदा है: जेआईटी को किसी भी तरह का अनुमान लगाने की ज़रूरत नहीं है कि पर्याप्त पर्याप्त सबक्लास नहीं है लेकिन हमेशा गतिशील चाल से बच सकता है - जिसे कुछ मामलों में कुछ छोटे प्रदर्शन लाभ प्राप्त करना चाहिए। ऐसा नहीं है कि यह ध्यान देने योग्य होगा लेकिन हे;) – Voo

+1

@Voo: हॉटस्पॉट पहले से ही जब भी संभव हो गतिशील चालान से बचाता है (उदाहरण के लिए, एकल कंक्रीट वर्ग के साथ इंटरफेस या अमूर्त वर्ग जो इसे लागू करता है), "अंतिम" की आवश्यकता नहीं है। मूल संदेश की भावना में, और जो मैंने हमेशा जेआईटी हैकर से सुना है: "अंतिम" (और अन्य भाषा विशेषताओं) का उपयोग करें जब यह आपके कोड में समझ में आता है, क्योंकि ऐसा नहीं लगता कि यह आपके कोड को तेज़ी से बनाएगा। – vanza

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