जबकि System.arraycopy
देशी रूप कार्यान्वित किया जाता है, और इसलिए एक जावा पाश से तेजी से हो सकता है, यह हमेशा के रूप में तेजी से के रूप में आप उम्मीद कर सकते नहीं है। इस उदाहरण पर विचार:
Object[] foo = new Object[]{...};
String[] bar = new String[foo.length];
System.arraycopy(foo, 0, bar, 0, bar.length);
इस मामले में, foo
और bar
सरणियों के आधार प्रकार विभिन्न आधार प्रकार है, इसलिए arraycopy
के कार्यान्वयन सुनिश्चित करें कि यह वास्तव में है बनाने के लिए की नकल की हर संदर्भ के प्रकार की जाँच करने के लिए किया एक स्ट्रिंग उदाहरण का संदर्भ। यह काफी धीमा है कि सरणी सामग्री की एक सरल सी-शैली memcopy।
अन्य मुद्दा यह है कि Arrays.copyOf
हुड के नीचे System.arraycopy
का उपयोग करता है, तो आप एक नई सरणी बनाने और यह अपने आप भरने arraycopy
का उपयोग कर कम से कम हो जाएगा द्वारा प्राप्त की बचत। मान लीजिए कि आप यही करने की कोशिश कर रहे हैं ...
मेरी सलाह उस संस्करण का उपयोग करना होगा जो आपके कोड को पढ़ने के लिए सबसे आसान बनाता है, और केवल प्रोफाइलिंग प्रोफाइलिंग के बारे में बताता है कि यह महत्वपूर्ण है।
1 - यह तेजी से हो सकता है, लेकिन यह भी संभव है कि JIT कम्पाइलर एक हाथ से कोड पाश के अनुकूलन कोई अंतर नहीं है कि वहाँ इस तरह के एक अच्छा काम करता है।
स्रोत
2010-04-07 04:15:53
"बलोच" क्या है? कोड स्निपेट प्रासंगिक क्यों है? –
@Ciro Bloch वह व्यक्ति है जिसने ArrayList कार्यान्वयन लिखा था। – Insomniac
यह भी देखें: https://stackoverflow.com/q/44487304/14955 – Thilo