जावा कोड का निदान करना: अपने जावा कोड ( Alt ) के प्रदर्शन में सुधार करना बताता है कि जेवीएम टेल-कॉल ऑप्टिमाइज़ेशन का समर्थन क्यों नहीं करता है।
हालाँकि यह अच्छी तरह से जाना जाता है कि टेल-रिकर्सिव फ़ंक्शन को एक साधारण लूप में स्वचालित रूप से कैसे बदलना है, जावा विनिर्देशन को इस परिवर्तन की आवश्यकता नहीं है। संभवतः, एक कारण यह आवश्यकता नहीं है कि, सामान्य रूप से, वस्तु-उन्मुख भाषा में परिवर्तन को सांख्यिकीय रूप से नहीं किया जा सकता है। इसके बजाय, पूंछ-पुनरावर्ती फ़ंक्शन से सरल लूप में परिवर्तन गतिशील रूप से एक जेआईटी संकलक द्वारा किया जाना चाहिए।
यह तब जावा कोड का एक उदाहरण देता है जो रूपांतरित नहीं होगा।
इसलिए, लिस्टिंग 3 शो में उदाहरण के रूप में, हम भाषा के शब्दार्थ को संरक्षित करते हुए जावा कोड पर पूंछ पुनरावृत्ति के परिवर्तन के लिए स्थिर संकलक से अपेक्षा नहीं कर सकते। इसके बजाय, हमें जेआईटी द्वारा गतिशील संकलन पर भरोसा करना चाहिए। JVM के आधार पर, JIT ऐसा कर भी सकता है और नहीं भी।
तब यह एक परीक्षण देता है जिसका उपयोग आप यह पता लगाने के लिए कर सकते हैं कि आपका JIT ऐसा करता है या नहीं।
स्वाभाविक रूप से, चूंकि यह एक आईबीएम पेपर है, इसमें एक प्लग शामिल है:
मैंने इस कार्यक्रम को जावा एसडीके के एक जोड़े के साथ चलाया, और परिणाम आश्चर्यजनक थे। संस्करण 1.3 के लिए सन के हॉटस्पॉट जेवीएम पर चलने से पता चलता है कि हॉटस्पॉट परिवर्तन का प्रदर्शन नहीं करता है। डिफ़ॉल्ट सेटिंग्स पर, स्टैक स्पेस मेरी मशीन पर एक सेकंड से भी कम समय में समाप्त हो जाता है। दूसरी ओर, समस्या के बिना संस्करण 1.3 purrs के लिए IBM का JVM, यह दर्शाता है कि यह इस तरह से कोड को रूपांतरित करता है।