32 बिट सॉफ़्टवेयर और 64 बिट सॉफ़्टवेयर के बीच का अंतर पॉइंटर्स का आकार और शायद पूर्णांक रजिस्टरों का आकार है। बस।
इसका मतलब है कि आपके प्रोग्राम के सभी पॉइंटर्स आकार से दोगुने हैं। और (कम से कम ILP32 / LP64 आर्किटेक्चर पर) आपके long
एस आकार से दोगुने हैं। यह आमतौर पर ऑब्जेक्ट कोड आकार में लगभग 30% वृद्धि के लिए काम करता है। इस का मतलब है कि …
- आपका ऑब्जेक्ट कोड RAM से डिस्क में लोड होने में ~ 30% अधिक समय लेगा
- आपका ऑब्जेक्ट कोड मेमोरी में ~ 30% अधिक स्थान लेगा
- आपने अपनी मेमोरी बैंडविड्थ (ऑब्जेक्ट कोड के लिए) को ~ 20% तक प्रभावी रूप से कम कर दिया है
- आपने निर्देश कैश का आकार ~ 20% तक प्रभावी रूप से कम कर दिया है
इससे प्रदर्शन पर एक नगण्य नकारात्मक प्रभाव पड़ता है।
ऐसा करने से ही समझ में आता है अगर आप किसी भी तरह से उन प्रदर्शन लागतों को "वापस खरीद सकते हैं"। मूल रूप से, ऐसा करने के दो तरीके हैं: आप 64 बिट पूर्णांक गणित करते हैं, या आपको 4 से अधिक GiByte मैप्ड मेमोरी की आवश्यकता होती है। यदि उनमें से एक या दोनों सत्य हैं, तो 64 बिट सॉफ़्टवेयर का उपयोग करना समझ में आता है, अन्यथा यह नहीं है।
नोट: कुछ ऐसे आर्किटेक्चर हैं जहां 32 या 64 बिट वेरिएंट नहीं हैं। उस मामले में, सवाल स्पष्ट रूप से समझ में नहीं आता है। सबसे प्रसिद्ध IA64 हैं, जो केवल 64 बिट है और जिसका कोई 32 बिट संस्करण नहीं है, और x86 / AMD64 जो निकट से संबंधित हैं, विभिन्न आर्किटेक्चर हैं, x86 केवल 32 बिट, AMD64 केवल 64 बिट है।
दरअसल, वह बाद का बयान अब 100% सच नहीं है। लिनक्स ने हाल ही में x32 ABI को जोड़ा है, जो आपको 32 बिट बिंदुओं के साथ AMD64 कोड चलाने की अनुमति देता है, इसलिए भले ही यह "उचित" सीपीयू वास्तुकला नहीं है, यह AMD64 वास्तुकला का इस तरह से उपयोग करने का एक तरीका है जैसे कि यह एक मूल था 32 बिट संस्करण। यह ठीक किया गया था क्योंकि प्रदर्शन भूमि के ऊपर मैं उपर्युक्त पैदा कर रहा था वास्तविक वास्तविक दुनिया प्रणालियों में वास्तविक दुनिया कोड चलाने वास्तविक दुनिया उपयोगकर्ताओं के लिए औसत दर्जे का, मात्रात्मक समस्याओं।