क्योंकि प्रदर्शन के अनुकूलन और पूरी तरह से सुरक्षा को बंद करने के बीच एक बड़ा अंतर है
जीसी की संख्या को कम करके, उनका ढांचा अधिक संवेदनशील है और (संभवतः) तेज चला सकता है। अब, कचरा कलेक्टर के लिए अनुकूलन का मतलब यह नहीं है कि वे कभी भी कचरा संग्रह नहीं करते हैं। इसका मतलब यह है कि वे इसे कम बार करते हैं, और जब वे ऐसा करते हैं, तो यह वास्तव में तेजी से चलता है। उन प्रकार के अनुकूलन में शामिल हैं:
- छोटी थ्रो-ऑब्जेक्ट्स का उपयोग करके किसी बचे स्थान (यानी जो कम से कम एक कचरा संग्रह में बच जाता है) पर जाने वाली ऑब्जेक्ट की संख्या को कम करना। बची हुई जगह पर ले जाने वाली वस्तु को इकट्ठा करना कठिन होता है और यहां कचरा संग्रह होने से कुछ समय में पूरे जेवीएम को ठंड लगने लगती है।
- शुरू करने के लिए बहुत से ऑब्जेक्ट आवंटित न करें। यदि आप सावधान नहीं हैं तो यह बैकफ़ायर हो सकता है, क्योंकि युवा पीढ़ी के ऑब्जेक्ट आवंटित करने और इकट्ठा करने के लिए सुपर सस्ते हैं।
- सुनिश्चित करें कि नई वस्तु पुराने को इंगित करती है (और उसके आसपास दूसरा तरीका नहीं है) ताकि युवा वस्तु को इकट्ठा करना आसान हो, क्योंकि उनके लिए कोई संदर्भ नहीं है जिससे उन्हें रखा जाएगा
जब आप प्रदर्शन को ट्यून करते हैं, तो आप आमतौर पर कोड की अनदेखी करते हुए कुछ बहुत विशिष्ट "हॉट स्पॉट" को ट्यून करते हैं जो अक्सर नहीं चलते हैं। यदि आप जावा में ऐसा करते हैं, तो आप कचरा संग्रहकर्ता को अभी भी उन अंधेरे कोने की देखभाल कर सकते हैं (क्योंकि यह बहुत अंतर नहीं करेगा) तंग लूप में चलने वाले क्षेत्र के लिए बहुत सावधानी से अनुकूलन करते हुए। इसलिए आप चुन सकते हैं कि आप कहां अनुकूलन करते हैं और आप कहां नहीं हैं, और आप इस प्रकार अपने प्रयास पर ध्यान केंद्रित कर सकते हैं जहां यह मायने रखता है।
अब, यदि आप पूरी तरह से कचरा संग्रहण बंद कर देते हैं, तो आप चयन नहीं कर सकते । आपको हर वस्तु को कभी भी मैन्युअल रूप से निपटाना होगा । उस विधि को प्रति दिन अधिकतम एक बार कहा जाता है? जावा में, आप इसे होने दे सकते हैं, क्योंकि इसका प्रदर्शन प्रभाव नगण्य है (हर महीने पूर्ण जीसी होने देना ठीक हो सकता है)। C ++ में, आप अभी भी संसाधन लीक कर रहे हैं, इसलिए आपको उस अस्पष्ट पद्धति का भी ध्यान रखना चाहिए। इसलिए आपको अपने आवेदन के प्रत्येक, एकल, हिस्से में संसाधन प्रबंधन के लिए मूल्य का भुगतान करना होगा , जबकि जावा में आप ध्यान केंद्रित कर सकते हैं।
लेकिन यह खराब हो जाता है।
यदि आपके पास एक बग है, तो अपने आवेदन के एक अंधेरे कोने में कहें जो केवल सोमवार को पूर्णिमा पर पहुंचता है? जावा में मजबूत सुरक्षा की गारंटी है। कोई भी "अपरिभाषित व्यवहार" नहीं है। यदि आप कुछ गलत उपयोग करते हैं, तो एक अपवाद फेंक दिया जाता है, आपका प्रोग्राम बंद हो जाता है, और कोई डेटा भ्रष्टाचार नहीं होता है। तो आपको पूरा यकीन है कि आपके बिना कुछ भी गलत नहीं हो सकता।
लेकिन डी की तरह कुछ में, आप एक खराब पॉइंटर एक्सेस, या एक बफर अतिप्रवाह कर सकते हैं, और आप अपनी मेमोरी को भ्रष्ट कर सकते हैं, लेकिन आपके प्रोग्राम को पता नहीं चलेगा (आपने सुरक्षा बंद कर दी, याद रखें?) और इसके गलत होने से बचते रहेंगे? डेटा, और कुछ बहुत बुरा काम करते हैं और अपने डेटा को भ्रष्ट करते हैं, और आप नहीं जानते, और जैसा कि अधिक भ्रष्टाचार होता है, आपका डेटा अधिक से अधिक गलत हो जाता है, और फिर अचानक यह टूट जाता है, और यह एक जीवन में महत्वपूर्ण अनुप्रयोग था, और एक रॉकेट की गणना में कुछ त्रुटि हुई, और इसलिए यह काम नहीं करता है, और रॉकेट फट गया, और किसी की मृत्यु हो गई, और आपकी कंपनी हर अखबार के पहले पृष्ठ में है और आपका बॉस आपको यह कहते हुए अपनी उंगली इंगित करता है "आप हैं " इंजीनियर ने सुझाव दिया कि हमने प्रदर्शन को अनुकूलित करने के लिए डी का उपयोग किया है, आप कैसे आते हैं सुरक्षा के बारे में नहीं सोचा था?"और यह आपकी गलती है। आपने प्रदर्शन में अपने मूर्खतापूर्ण प्रयास से उन लोगों को मार डाला।
ठीक है, ठीक है, ज्यादातर समय की तुलना में यह बहुत कम नाटकीय है। लेकिन यहां तक कि एक व्यवसायिक महत्वपूर्ण एप्लिकेशन या सिर्फ एक जीपीएस ऐप या यूं कहें कि, एक सरकारी स्वास्थ्य सेवा वेबसाइट कुछ नकारात्मक परिणाम प्राप्त कर सकती है यदि आपके पास कीड़े हैं। एक ऐसी भाषा का उपयोग करना जो या तो उन्हें पूरी तरह से रोकती है या असफल-तेज होती है जब वे आमतौर पर एक बहुत अच्छा विचार होता है।
एक सुरक्षा को बंद करने की लागत है। मूल निवासी हमेशा समझ में नहीं आता है। कभी-कभी यह बहुत सरल और सुरक्षित होता है कि थोड़ी सी सुरक्षित भाषा को अनुकूलित कर लें, ताकि आप उस भाषा के लिए जा सकें जहां आप अपने आप को बड़े स्तर पर शूट कर सकते हैं। बहुत से मामले में सुधार और सुरक्षा ट्रम्प कुछ नैनो दूसरी है जिसे आपने जीसी को पूरी तरह से खत्म कर दिया होगा। Disruptor कर सकते हैं , उन स्थिति में इस्तेमाल किया जा इसलिए मुझे लगता है LMAX-एक्सचेंज सही फोन किया।
लेकिन विशेष रूप से डी के बारे में क्या? यदि आप अंधेरे कोनों के लिए चाहते हैं, तो आपके पास एक GC है, और SafeD सबसेट (जिसे मैं संपादित करने से पहले नहीं जानता था) अपरिभाषित व्यवहार को हटा दें (यदि आप इसे उपयोग करना याद रखें!)।
खैर उस मामले में इसकी परिपक्वता का एक सरल सवाल है। जावा पारिस्थितिकी तंत्र अच्छी तरह से लिखित उपकरण और परिपक्व पुस्तकालयों (विकास के लिए बेहतर) से भरा है। बहुत अधिक डेवलपर्स जावा को डी (रखरखाव के लिए बेहतर) जानते हैं। एक नई और नहीं-तो लोकप्रिय भाषा के लिए कुछ के रूप में महत्वपूर्ण के रूप में एक वित्तीय अनुप्रयोग के लिए जा रहे एक अच्छा विचार नहीं होता। कम-ज्ञात भाषा के साथ, यदि आपके पास कोई समस्या है, तो कुछ आपकी मदद कर सकते हैं, और जिन पुस्तकालयों को आप पाते हैं, उनमें कीड़े अधिक हैं क्योंकि वे कम लोगों के संपर्क में थे।
इसलिए मेरा आखिरी बिंदु अभी भी पकड़ में है: यदि आप गंभीर परिणामों से समस्याओं से बचना चाहते हैं, तो सुरक्षित विकल्पों के साथ रहें। डी के जीवन में इस बिंदु पर, इसके ग्राहक पागल जोखिम लेने के लिए तैयार छोटे स्टार्ट-अप हैं। यदि किसी समस्या पर लाखों खर्च हो सकते हैं, तो आप नवाचार बेल वक्र में और बेहतर रह सकते हैं ।