2013-12-11 8 views
5

जब मैं "गहराई में स्काला" की किताब पढ़ने, यह कहा गया है कि हॉटस्पॉट संकलक कई महत्वपूर्ण विशेषताएं है के गतिशील de-अनुकूलन के बारे में, उनमें से एक है "गतिशील डी-अनुकूलन":हॉटस्पॉट

यह अगर एक अनुकूलन किया निर्धारित करने की क्षमता है नहीं, वास्तव में, प्रदर्शन में सुधार और है कि अनुकूलन पूर्ववत, दूसरों को लागू करने के लिए

की इजाजत दी ऐसा लगता है हॉटस्पॉट "अनुकूलन" रों के सभी प्रकार की कोशिश करेंगे, और चुनें उनमें से सबसे अच्छा।

लेकिन मुझे काफी समझ में नहीं आ रहा है। क्या हॉटस्पॉट द्वारा प्रदान किए गए सभी "अनुकूलन" हैं? मेरा मतलब है कि प्रोग्रामर अक्सर कुछ कौशल के साथ कोड को अनुकूलित करने का प्रयास करते हैं, हॉटस्पॉट उन्हें संभालेगा?

और क्या कोई सामान्य "अनुकूलन" हॉटस्पॉट कोशिश करेगा?

उत्तर

0

एक "कंपाइलर अनुकूलन" कुछ अर्थों में इसे बेहतर बनाने के प्रयास में कोड का एक परिवर्तन है - आमतौर पर, इसे करने में कम समय लगता है। Wikipedia article on optimizing compilers में सामान्य अनुकूलन की एक अच्छी सूची है; हॉटस्पॉट जेआईटी कंपाइलर शायद उन सभी को और अधिक करता है।

तो पुस्तक का अर्थ है कि हॉटस्पॉट कोड में से कुछ तकनीकों को लागू करेगा, देखें कि यह रन-टाइम में सुधार करता है, और यदि ऐसा नहीं होता है तो यह इसे वापस कर देगा।

जैसा कि आपने सही ढंग से कहा है, इसे बेहतर बनाने के लिए हाथ से कोड बदलने की प्रक्रिया को "अनुकूलन" या "मैन्युअल अनुकूलन" भी कहा जाता है। संकलक जितना अनुकूल हो उतने अनुकूलन को लागू करने का प्रयास करता है, लेकिन कई संभावित संशोधनों को अभी भी मैन्युअल रूप से लागू करने की आवश्यकता है। एक बार फिर, Wikipedia has a solid article about what a program optimization is

8

हॉटस्पॉट के अनुकूलन जावा स्रोत कोड स्तर पर डेवलपर्स के मुकाबले अलग-अलग प्रकार के होते हैं, हालांकि उनमें से कुछ का शुद्ध प्रभाव होता है।

यह JIT कम्पाइलर के शस्त्रागार का एक हिस्सा है:

  • विधि कॉल इनलाइनिंग;
  • लूप से मूल्यों को उतारना;
  • मोनोमोर्फिक कॉल साइटें;
  • स्टैक पर वस्तुओं की नियुक्ति, एस्केप विश्लेषण के अधीन;
  • सीपीयू रजिस्टरों के लिए बाध्यकारी चर;
  • ताला elision।

सबसे दिलचस्प हिस्सा जैसे अनुकूलन, में से कुछ के बीच तालमेल है:

  1. एक फोन साइट monomorphic के रूप में कार्यान्वित किया जाता है;
  2. यह विधि को रेखांकित करने की अनुमति देता है;
  3. जो किसी ऑब्जेक्ट के स्टैक प्लेसमेंट को आमंत्रित करता है;
  4. जो ऑब्जेक्ट के फ़ील्ड को रजिस्टरों तक सीमित करने की अनुमति देता है।

आपका उद्धरण, हालांकि, मेरे ज्ञान का सबसे अच्छा गलत है। अनुकूलित कोड किसी भी आत्म-प्रोफाइलिंग में संलग्न नहीं होता है क्योंकि यह इसे धीमा कर देगा।Deoptimization के लिए एकमात्र शर्त आशावादी धारणाओं का उल्लंघन है जिसके अंतर्गत कोड जेआईटी संकलित था। उदाहरण: एक दी गई विधि कॉल साइट केवल एक प्रकार की ऑब्जेक्ट प्राप्त करती है, उस ऑब्जेक्ट (मोनोमोर्फिक कॉल साइट के रूप में संकलित) के लिए विशिष्ट हो जाती है, लेकिन फिर, बाद में, एक अलग ऑब्जेक्ट प्रकार प्रकट होता है। अब अनुकूलित कोड निष्पादित नहीं किया जा सकता है और इसे deoptimized किया जाना चाहिए।

10

ओरेकल (rather concise) summary of this performance techniques applied by the JVM प्रदान करता है। यह बताता है:

Deoptimization एक अनुकूलित स्टैक फ्रेम को पर एक अपरिवर्तित करने की प्रक्रिया है। संकलित विधियों के संबंध में, यह अमान्य आशावादी अनुकूलन, के साथ कोड को फेंकने की प्रक्रिया और इसे कम-अनुकूलित, अधिक मजबूत कोड द्वारा प्रतिस्थापित करने की प्रक्रिया भी है। एक विधि सिद्धांत में दर्जनों बार deoptimized हो सकता है।

  1. संकलक एक untaken शाखा बाहर ठूंठ और deoptimize अगर यह कभी लिया जाता है हो सकता है:

इस सारांश में, deoptimization के लिए कारणों निम्नानुसार सूचीबद्ध हैं।

  • इसी तरह निम्न स्तर की सुरक्षा जांच के लिए जो ऐतिहासिक रूप से कभी विफल नहीं हुआ है।
  • यदि कोई कॉल साइट या कास्ट एक अप्रत्याशित प्रकार का सामना करती है, तो संकलक deoptimizes।
  • यदि कोई वर्ग लोड किया गया है जो किसी पुराने वर्ग पदानुक्रम विश्लेषण को अमान्य करता है, तो किसी भी थ्रेड में किसी भी प्रभावित विधि सक्रियण को को एक सुरक्षित बिंदु और deoptimized पर मजबूर किया जाता है।
  • इस तरह के अप्रत्यक्ष deoptimization निर्भरता प्रणाली द्वारा मध्यस्थता है। यदि कंपाइलर अनचेक धारणा बनाता है, तो उसे चेक करने योग्य निर्भरता पंजीकृत करनी होगी। व्यक्तिगत रूप से (उदाहरण के लिए, उस वर्ग फू कोई उपवर्गों है, या विधि Foo.bar है कोई ओवरराइड है।)
  • , मैं पर this blog entry पाया सूक्ष्म बेंचमार्किंग काफी पठनीय जो भी अनुकूलन और deoptimization के विषयों को शामिल किया गया हॉटस्पॉट वीएम पर। इसके अलावा, मैं reading through this presentation की सिफारिश कर सकता हूं।

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