क्षमा करें अगर सवाल बेवकूफ लगता है। मैं केवल डेटा संरेखण के मुद्दे के बारे में अस्पष्ट रूप से संज्ञेय हूं और कभी भी 64-बिट प्रोग्रामिंग नहीं किया है। मैं अभी कुछ 32-बिट x86 कोड पर काम कर रहा हूं। यह अक्सर int की एक सरणी का उपयोग करता है। कभी-कभी एक 32-बिट पूर्णांक पढ़ा जाता है। कभी-कभी दो या अधिक पढ़े जाते हैं। कुछ बिंदु पर मैं कोड 64-बिट बनाना चाहता हूं। मुझे यकीन नहीं है कि मुझे इस int सरणी को int
या long int
के रूप में घोषित करना चाहिए। मैं इसके बजाय पूर्णांक की चौड़ाई रखूंगा, इसलिए मुझे मतभेदों के बारे में चिंता करने की ज़रूरत नहीं है। मैं चिंतित हूं कि किसी ऐसे पते को पढ़ना/लिखना जो प्राकृतिक शब्द से गठबंधन नहीं है, धीमा हो सकता है।क्या x86-64 में 32-बिट पूर्णांक की एक सरणी का प्रदर्शन पेनल्टी एक्सेस है?
उत्तर
मिसाइलमेंटमेंट दंड केवल तब होता है जब लोड या स्टोर संरेखण सीमा पार करता है।
- प्राकृतिक हार्डवेयर की शब्द-size: सीमा आमतौर पर का छोटा होता है। (32-बिट्स या 64-बिट *)
- डेटा-प्रकार का आकार।
यदि आप 64-बिट (8-बाइट) आर्किटेक्चर पर 4-बाइट शब्द लोड कर रहे हैं। इसे 8-बाइट गठबंधन करने की आवश्यकता नहीं है। यह केवल 4-बाइट गठबंधन होना चाहिए।
इसी तरह, यदि आप किसी भी मशीन पर 1-बाइट चार लोड कर रहे हैं, तो इसे बिल्कुल गठबंधन करने की आवश्यकता नहीं है।
* ध्यान दें कि सिमड वैक्टर एक बड़े प्राकृतिक शब्द-आकार का संकेत दे सकते हैं। उदाहरण के लिए, 16-बाइट एसएसई को अभी भी x86 और x64 दोनों पर 16-बाइट संरेखण की आवश्यकता है। (स्पष्ट गलत संरेखित भार/दुकानों को छोड़कर)
संक्षेप में
तो, कोई आप डेटा-संरेखण के बारे में चिंता करने की जरूरत नहीं है। भाषा और संकलक आपको इसके बारे में चिंता करने से रोकने के लिए बहुत मेहनत करता है।
तो बस जो कुछ भी डेटाटाइप आपके लिए सबसे ज्यादा समझ में आता है उसके साथ चिपके रहें।
यहाँ उपलब्ध अच्छी जानकारी का एक बहुत कुछ है: Performance 32 bit vs. 64 bit arithmetic
इससे भी अधिक जानकारी https://superuser.com/questions/56540/32-bit-vs-64-bit-systems, जहां जवाब सबसे खराब देखा है के लिए 5% धीमा (एक आवेदन परिप्रेक्ष्य, न कि व्यक्तिगत कार्यों से) का दावा है।
संक्षिप्त उत्तर नहीं है, आप प्रदर्शन हिट नहीं करेंगे।
64-बिट x86 CPUs अभी भी 32-बिट मानों के कुशल हेरफेर के लिए अत्यधिक अनुकूलित किए गए हैं। 64-बिट ऑपरेटिंग सिस्टम पर भी, 32-बिट मानों तक पहुंच कम से कम 64-बिट मानों तक पहुंचने जितनी तेज है। अभ्यास में, यह वास्तव में तेज़ होगा क्योंकि कम कैश स्पेस और मेमोरी बैंडविड्थ का उपभोग होता है।
जब भी आप किसी भी स्मृति स्थान तक पहुंचते हैं तो एक संपूर्ण कैश लाइन एल 1 कैश में पढ़ी जाती है, और उस लाइन में किसी भी चीज़ के बाद की पहुंच जितनी जल्दी हो सके। जब तक आपकी 32-बिट पहुंच कैश लाइन को पार न करे (जो यह 32-बिट संरेखण पर नहीं होगी) तो यह 64-बिट पहुंच जितनी तेज होगी।
काफी नहीं। 1 मान तक पहुंच एक जैसी होगी। यदि आप एक और * 32-बिट मान को एक्सेस करते हैं जो एक ही कैश लाइन में है, तो यह पहले से ही होगा - आप इसे "बाद में ..." के साथ भी बताएंगे। प्रति कैश लाइन के अधिक डेटा तत्व लोड करने के कारण छोटे डेटा आकारों का उपयोग आमतौर पर अधिक कैश अनुकूल होता है। – phkahler
- 1. गोलांग, क्या एक सरणी में पूर्णांक की फ़ाइल पढ़ने का एक बेहतर तरीका है?
- 2. अक्षरों की एक सरणी में एक पूर्णांक कनवर्ट करें: जावा
- 3. एक सरणी में पूर्णांक की संख्या की गणना
- 4. एक MySQL कॉलम में पूर्णांक की सरणी को स्टोर करने का सबसे प्रभावी तरीका क्या है?
- 5. पूर्णांक की सरणी के लिए डब्ल्यूएसडीएल घोषणा क्या है?
- 6. इंटरलाक्ड। एक पूर्णांक सरणी में वृद्धि
- 7. एक पूर्णांक सरणी को अन्य
- 8. पूर्णांक सरणी
- 9. पूर्णांक सरणी
- 10. संसाधन आईडी का पूर्णांक सरणी बनाना
- 11. पोस्टग्रेस्क्ल - बड़े डेटाबेस में सरणी का उपयोग करने का प्रदर्शन
- 12. जावास्क्रिप्ट ऑब्जेक्ट एक्सेस प्रदर्शन
- 13. मैं पाइथन में बाइट्स की सरणी के रूप में एक पूर्णांक का इलाज कैसे करूं?
- 14. रूबी में स्ट्रिंग्स की सरणी में पूर्णांक की सरणी को कनवर्ट करें?
- 15. पोस्टग्रेज़ पूर्णांक सरणी पैरामीटर के रूप में?
- 16. 64-बिट वातावरण में 32-बिट पूर्णांक का प्रदर्शन (सी ++)
- 17. एक पूर्णांक सरणी के लिए चेकसम?
- 18. मेरे पास पूर्णांक की एक सरणी है, मैं एक mysql क्वेरी (php में) में प्रत्येक का उपयोग कैसे करूं?
- 19. डिफॉल्ट-एक पूर्णांक सरणी का निर्माण शून्य-प्रारंभिक होगा?
- 20. मैं एक सरणी में पूर्णांक वापस करने के लिए linq का उपयोग कैसे कर सकता हूं जो किसी अन्य सरणी की पूर्णांक संपत्ति से मेल नहीं खाता है?
- 21. छंटाई पूर्णांक सरणी
- 22. डाली चार सरणी पूर्णांक
- 23. मैं श्रेणियों की सरणी के रूप में पूर्णांक की सरणी को सारांशित कैसे करूं?
- 24. जावास्क्रिप्ट - बिट्स की सरणी में पूर्णांक को परिवर्तित करें
- 25. पूर्णांक सरणी या संरचना सरणी - जो बेहतर है?
- 26. प्रदर्शन स्वैपिंग पूर्णांक बनाम डबल
- 27. मेमोरी एक्सेस की लागत क्या है?
- 28. जावास्क्रिप्ट: 'splice' का एल्गोरिदमिक प्रदर्शन क्या है?
- 29. एक्स की गतिशील सरणी की डेल्फी गतिशील सरणी का मेमोरी लेआउट क्या है?
- 30. मुझे सरणी सूची में एक पूर्णांक डेटा खोजने की आवश्यकता है?
यदि आप निश्चित-चौड़ाई पूर्णांक चाहते हैं तो प्रयास करें: '' –
Mysticial
'int' आर्किटेक्चर के लिए प्राकृतिक प्रकार 'int32_t' है। जब तक कि आपके पास एक अलग प्रकार का उपयोग करने का कोई अच्छा कारण न हो, तब तक नहीं। –
@PeteBecker नहीं यह नहीं है। आज भी अधिकांश सिस्टम पर 'int' अभी भी 32-बिट्स है। – Mysticial