एक सरणी लौटने सेटिंग के दो तरीके/तुलना करें:सेटिंग/लौटने सरणियों के पसंदीदा तरीका
static public float[] test_arr_speeds_1(int a) {
return new float[]{ a, a + 1, a + 2, a + 3, a + 4, a + 5,
a + 6, a + 7, a + 8, a + 9 };
} // or e.g. field = new float... in method
static public float[] test_arr_speeds_2(int a) {
float[] ret = new float[10];
ret[0] = a;
ret[1] = a + 1;
ret[2] = a + 2;
ret[3] = a + 3;
ret[4] = a + 4;
ret[5] = a + 5;
ret[6] = a + 6;
ret[7] = a + 7;
ret[8] = a + 8;
ret[9] = a + 9;
return ret;
} // or e.g. field[0] = ... in method
दोनों अलग bytecodes पैदा करते हैं और दोनों अपने पूर्व राज्य के लिए decompiled जा सकता है। प्रोफाइलर (100 एम पुनरावृत्तियों, निष्पक्ष, विभिन्न परिवेश) के माध्यम से निष्पादन समय की जांच करने के बाद, _1 विधि का समय लगभग है। 4/3 _2 का समय, भले ही दोनों एक नई सरणी बनाते हैं और दोनों प्रत्येक फ़ील्ड को किसी दिए गए मान पर सेट करते हैं। समय ज्यादातर समय नगण्य हैं, लेकिन यह अभी भी मुझे खराब करता है - _1 स्पष्ट रूप से धीमा क्यों है? क्या कोई उचित, JVM- समर्थित तरीके से मुझे जांच/पुष्टि/समझा सकता है?
संबंधित पोस्टटेकोड प्रस्तुतिकरण यहां पोस्ट करने के लिए पर्याप्त हैं? –
1000 * 1000000 कॉल का औसत समय कम से कम मेरे लिए दोनों विधियों के लिए समान है। – IchBinKeinBaum
प्रिय डाउनवॉटर, क्या आप कृपया यह बता सकते हैं कि यह प्रश्न * कैसे नहीं बल्कि अनुसंधान प्रयोजन दिखाता है और यह कैसे उपयोगी है * अन्य उपयोगकर्ताओं के लिए यह उपयोगी नहीं है, खासकर यदि वोट अन्यथा दिखाए जाते हैं? – vaxquis