हाल ही में मैंने देखा कि 65 तत्वों वाले एक सरणी को घोषित करने से 65 तत्वों के साथ एक ही प्रकार की सरणी घोषित करने की तुलना में बहुत तेज (> 1000 गुना) है।
यहाँ वह कोड है जो मैंने इसका परीक्षण किया था:
public class Tests{
public static void main(String args[]){
double start = System.nanoTime();
int job = 100000000;//100 million
for(int i = 0; i < job; i++){
double[] test = new double[64];
}
double end = System.nanoTime();
System.out.println("Total runtime = " + (end-start)/1000000 + " ms");
}
}
यह लगभग 6 एमएस में चलता है, अगर मैं इसके new double[64]साथ प्रतिस्थापित करता हूं तो new double[65]लगभग 7 सेकंड लगते हैं। यदि यह समस्या अधिक से अधिक थ्रेड्स में फैली हुई है, तो यह समस्या और अधिक गंभीर हो जाती है, जहां से मेरी समस्या उत्पन्न होती है।
यह समस्या विभिन्न प्रकार के सरणियों जैसे int[65]या के साथ भी होती है String[65]। यह समस्या बड़े तारों के साथ नहीं होती है: String test = "many characters";लेकिन जब यह बदल जाता है तो यह होने लगता हैString test = i + "";
मैं सोच रहा था कि ऐसा क्यों है और अगर इस समस्या को दरकिनार करना संभव है।
byteइसके बजाय चलाता हूं, तो FWIW, मुझे समान प्रदर्शन विसंगतियां दिखाई देती हैं double।
System.nanoTime()अधिक पसंद किया जाना चाहिएSystem.currentTimeMillis()।