मैं उत्सुक था कि जावा के वर्ग और डबल के लिए आदिम प्रकार के बीच प्रदर्शन अंतर क्या था। इसलिए मैंने थोड़ा बेंचमार्क बनाया और कक्षा के प्रकार को 3x-7x धीमी गति से प्राप्त किया।जावा डबल बनाम डबल: क्लास टाइप बनाम आदिम प्रकार
class Main {
public static void main(String args[]) {
long bigDTime, littleDTime;
{
long start = System.nanoTime();
Double d = 0.0;
for (Double i = 0.0; i < 1432143.341; i += 0.1) {
d += i;
}
long end = System.nanoTime();
bigDTime = end - start;
System.out.println(bigDTime);
}
{
long start = System.nanoTime();
double d = 0.0;
for (double i = 0.0; i < 1432143.341; i += 0.1) {
d += i;
}
long end = System.nanoTime();
littleDTime = end - start;
System.out.println(littleDTime);
}
System.out.println("D/d = " + (bigDTime/littleDTime));
}
}
तो क्यों डबल प्रकार तो बहुत धीमी है: (पर स्थानीय मशीन OSX, 7x 3x ideone पर)
यहाँ परीक्षण है? गणितीय ऑपरेटरों को अनुमति देने के लिए इसे क्यों लागू किया गया है?
यह बॉक्स और अनबॉक्स की आवश्यकता के कारण धीमा है। यह व्यवहार की उम्मीद है। –
@ होवरक्राफ्टफुलऑफेल जो समझ में आता है लेकिन यह अभी भी बहुत अधिक ओवरहेड जैसा लगता है। –
यह बहुत अधिक ओवरहेड है। और इसी कारण से आपको महत्वपूर्ण कोड में आदिम रैपर प्रकारों के उपयोग से बचना चाहिए। –