उत्तर भाषा (कंपाइलर और रनटाइम पुस्तकालयों) के विशिष्ट कार्यान्वयन से जुड़ा हुआ है। विशिष्ट अनुकूलन विकल्पों की उपस्थिति तक या नहीं। और, ज़ाहिर है, कार्यान्वयन का संस्करण (और, जाहिर है, जेएलएस के साथ यह अनुपालन है)। तो, मिनीमा और मैक्सिमा की अवधि में बात करना बेहतर है। वास्तव में, यह अभ्यास बेहतर
Ex1 के लिए, वस्तुओं की न्यूनतम संख्या 1 है (संकलक को पता चलता है कि केवल स्थिरांक शामिल हैं और String s= "abc" ;
के लिए केवल कोड उत्पन्न करते हैं)। कार्यान्वयन के आधार पर अधिकतम कुछ भी हो सकता है, लेकिन एक उचित अनुमान 8 है (कुछ अन्य कॉन्फ़िगरेशन द्वारा उत्पादित संख्या के रूप में भी दिया गया है)।
एक्स 2 के लिए, वस्तुओं की न्यूनतम संख्या 2 है। कंपाइलर को यह जानने का कोई तरीका नहीं है कि क्या हमने स्ट्रिंगबिल्डर को अलग-अलग अर्थशास्त्र के साथ कस्टम संस्करण के साथ बदल दिया है, इसलिए यह अनुकूलित नहीं होगा। अधिकतम मेमोरी-संरक्षित स्ट्रिंगबिल्डर कार्यान्वयन के लिए अधिकतम 6 हो सकता है जो एक समय में char[]
सरणी एक वर्ण का समर्थन करता है, लेकिन ज्यादातर मामलों में यह 2 भी होगा।
स्रोत
2013-08-19 02:33:42
पहला उदाहरण 1 ऑब्जेक्ट बनाएगा क्योंकि संकलक इसे अनुकूलित कर सकता है। –
javac इसे अनुकूलित करेगा? –
उदाहरण 1 इसे उत्पन्न करता है: 'स्ट्रिंग एस = "ए"; एस = (नया स्ट्रिंगबिल्डर (स्ट्रिंग.वैल्यूऑफ (एस))। संलग्न करें ("बी")। ToString(); एस = (नया स्ट्रिंगबिल्डर (स्ट्रिंग.वैल्यूऑफ (एस))। संलग्न करें ("सी")। ToString(); System.err.println (ओं); '। ऐसा लगता है कि जावैक अनुकूलित नहीं कर रहा है (कम से कम जावा 6 में) –