मैं एक इंटरफ़ेस के साथ काम कर रहा हूं जो ऑब्जेक्ट को इसके इनपुट के रूप में टाइप करता है। यह मेरे लिए दुर्भाग्यपूर्ण है क्योंकि मेरे पास आदिम डेटा है जिसे कभी-कभी इंटरफ़ेस के माध्यम से पारित करने की आवश्यकता होती है। यह निश्चित रूप से मुझे बॉक्स में मजबूर करता है।एकल तत्व आदिम सरणी में गुजरकर मुक्केबाजी से बचें
प्रोफाइलिंग ने इस क्षेत्र को कोड में एक हॉटस्पॉट दिखाया है। इस प्रकार मैं इस क्षेत्र को तेज़ी से बनाने के विकल्पों की तलाश कर रहा हूं।
एक विचार जो मैंने आज किया था, एक स्थैतिक आदिम सरणी को प्रीलोकेट करना है, और इसमें मूल मूल्य को स्टोर करना है, और उसके बाद सरणी को पारित करना है (और फिर इंटरफ़ेस के कार्यान्वयन में, डबल से बाहर ले जाएं सरणी
मैंने इसका परीक्षण करने के लिए कुछ कोड लिखे हैं। उचित मूल्यों (10 मिलियन) के लिए, मैं देख रहा हूं कि सरणी विधि स्पष्ट रूप से तेज़ी से है। क्योंकि मैं अपने परीक्षण के पुनरावृत्तियों की संख्या में वृद्धि करता हूं, दोनों अभिसरण।
मुझे आश्चर्य है कि किसी ने पहले इस दृष्टिकोण के बारे में सोचा है, और यदि इस कुएं को बेंचमार्क करने के बारे में कोई सुझाव है।
,210उदाहरण कोड:
Double data = Double.valueOf(VALUE);
inst.interface(data);
//inside interface(Object object)...
Double data = (Double) object;
double d = data.value();
बनाम ...
doublearray[0] = VALUE;
inst.interface(data);
//inside interface(Object object)...
double[] data = (double[]) object;
double d = data[0];
धन्यवाद! आरबी
क्यों वैश्विक 'डबल' चर नहीं है? – irreputable