2011-01-07 12 views
16

प्रोग्रामिंग में कौन सा सबसे अच्छा है - int या Integer? विशेष रूप से जब भी दोनों एक ही काम कर रहे हैं?int और Integer के प्रदर्शन की तुलना

मैं जावा में एक एप्लिकेशन लिख रहा हूं। आदिम डेटा प्रकारों के अधिकांश स्थानों में, मैं int का उपयोग करता हूं; और वस्तुओं के लिए, मैं Integer का उपयोग करता हूं। तो मैं उलझन में हूं- कौन सा स्थान सबसे अच्छा है, जहां हमें वस्तुओं का उपयोग करना है।

प्रदर्शन के अनुसार, जावा एप्लिकेशन के लिए कौन सा सबसे अच्छा है?

उत्तर

21

जब संभव हो तो int का उपयोग करें, और आवश्यकता होने पर Integer का उपयोग करें। चूंकि int एक आदिम है, यह तेज़ होगा। आधुनिक जेवीएम जानते हैं कि Integer एस ऑटो-मुक्केबाजी का उपयोग करके अनुकूलित कैसे करें, लेकिन यदि आप प्रदर्शन महत्वपूर्ण कोड लिख रहे हैं, तो int जाने का तरीका है।

this और this आलेख पर एक नज़र डालें। यद्यपि आपको उन्हें पूर्ण सत्य के रूप में नहीं मानना ​​चाहिए, लेकिन वे दिखाते हैं कि वस्तुएं उनके आदिम समकक्षों की तुलना में धीमी होंगी।

तो, जब भी संभव हो int का उपयोग करें (मैं खुद को दोहरा दूंगा: यदि आप प्रदर्शन महत्वपूर्ण कोड लिख रहे हैं)। यदि किसी विधि को एक इंटीजर की आवश्यकता होती है, तो इसके बजाय इसका उपयोग करें।

यदि आपको प्रदर्शन की परवाह नहीं है और ऑब्जेक्ट उन्मुख फैशन में सबकुछ करना चाहते हैं, तो Integer का उपयोग करें।

+0

आपके उत्तर के लिए धन्यवाद – DJJ

+4

प्रदर्शन विचार करने के लिए एकमात्र चीज नहीं है। int इंटीजर की तुलना में कम मेमोरी का उपयोग करेगा (मोटे तौर पर एक इंटीजर बोलने से दोगुनी मेमोरी होती है)। यदि आप कई संख्याओं से निपट रहे हैं तो इससे काफी अंतर हो सकता है –

+1

उत्तर में दिए गए लिंक टूटे हुए हैं, [यहां] [http://openwritings.net/content/public/java/performance-primitive-data-type-vs- ऑब्जेक्ट-डेटा-प्रकार) दूसरे आलेख का वर्तमान लिंक। लेख से एक बात यह है कि प्रदर्शन पर विचार करते समय, कई उपयोग-मामलों के लिए int और Integer का उपयोग करने के बीच अंतर महत्वपूर्ण नहीं होगा। जब तक आप बहुत बड़ी संख्या में इंटीजर या गणना से निपट नहीं रहे हैं। – neilireson

3

int एक आदिम, आमतौर पर यह तेज़ होना चाहिए। इसमें सिर्फ कच्चे नंबर का डेटा है।

Integer एक वस्तु है, इसमें कुछ अतिरिक्त सामान हैं ताकि आप उदा। सूची में संख्या डाल सकते हैं।

1

int आदिम है, इंटीजर एक वस्तु के रूप में एक int लपेटा है।

यह वास्तव में निर्भर करता है कि आप उनका उपयोग कैसे करेंगे।

6

जहां भी संभव हो int का उपयोग करें। Integer का उपयोग केवल तभी करें:

  • आपको "कोई मूल्य" या "अनियमित" प्रतिनिधित्व करने का कोई तरीका चाहिए। Integernull हो सकता है, int हमेशा एक int मान है।
  • आप (हालांकि आप int बाहर से इस्तेमाल करते हैं और इस तथ्य autoboxing छिपाने हो सकता है संग्रह आंतरिक रूप से दुकानों Integer उदाहरण) List तरह संग्रह का उपयोग करना चाहते हैं।
  • आप एक एपीआई, फ्रेमवर्क या उपकरण का उपयोग कर रहे हैं जिसके लिए आपको Integer या Object का उपयोग करने की आवश्यकता है, या आदिम प्रकारों के साथ काम नहीं करता है।
  • आपको ऑब्जेक्ट (बहुत ही असंभव) पर सिंक्रनाइज़ करने में सक्षम होना चाहिए।
+0

क्या ये सिफारिशें अभी भी सच हैं? मैं कुछ बहुत भारी जेएसओएन deserialization- संबंधित काम कर रहा हूँ और मुझे uninitialized (वैकल्पिक) क्षेत्रों का प्रतिनिधित्व करने के लिए एक रणनीति के साथ आने में परेशानी हो रही है। यदि अधिक उपयुक्त हो तो मैं एक अलग प्रश्न पूछूंगा। – NathanChristie

+0

आजकल, कोई "विकल्प नहीं" के लिए 'OptionalInt' और इसकी' .empty() 'का उपयोग करेगा। – glglgl

1

वैकल्पिक दृश्य के रूप में .... शायद आपको न तो पूर्णांक और न ही int का उपयोग करना चाहिए।

यदि मूल्य वास्तव में व्यवहार के साथ एक वस्तु है - जैसे धन की राशि, या दूरी या कुछ कहें, तो शायद आपको व्यवहार के साथ एक वस्तु का उपयोग करना चाहिए।

आप बात इस तरह का यहाँ के बारे में अधिक देख सकते हैं:

http://www.time4tea.net/wiki/display/MAIN/Microtypes

इस हालांकि "धीमे" हो सकता है, और प्रकार सुरक्षा प्रोग्रामिंग, परीक्षण और बहुत आसान & आपके सिस्टम की डीबगिंग कर देगा और तेज।

संबंधित मुद्दे