64 बिट जेआईटी बनाम 32 बिट जेआईटी के तहत अपने .NET अनुप्रयोगों को चलाने से स्विच करते समय प्रदर्शन, स्मृति इत्यादि के मामले में असामान्य, अप्रत्याशित परिणाम हुए हैं? मुझे अच्छे में दिलचस्पी है, लेकिन लोगों ने आश्चर्यजनक रूप से खराब मुद्दों में दिलचस्पी है।मेरा 32 बिट सिरदर्द अब 64 बिट माइग्रेन है?! (या 64 बिट .NET CLR रनटाइम समस्याएं)
मैं एक नया .NET एप्लिकेशन लिखने की प्रक्रिया में हूं जो 32 बिट और 64 बिट दोनों में तैनात किया जाएगा। एप्लिकेशन को पोर्ट करने के मुद्दों से संबंधित कई प्रश्न हैं - मैं "gotchas" from a programming/porting standpoint से अनजान हूं। (यानी: देशी/COM इंटरऑप को सही ढंग से संभालने, संरचनाओं के आकार को बदलने वाले structs में एम्बेडेड संदर्भ प्रकार)
हालांकि, this question and it's answer मुझे सोच रहा है - मैं अन्य मुद्दों को किस प्रकार देख रहा हूं?
ऐसे कई प्रश्न और ब्लॉग पोस्ट हैं जो इस मुद्दे के आसपास स्कर्ट करते हैं, या इसके एक पहलू को दबाते हैं, लेकिन मैंने कुछ भी नहीं देखा है जो समस्याओं की एक सभ्य सूची संकलित है।
विशेष रूप से - मेरा एप्लिकेशन बहुत सीपीयू बाध्य है और इसमें बड़ी मेमोरी उपयोग पैटर्न (इसलिए पहली जगह 64 बिट की आवश्यकता है), साथ ही साथ प्रकृति में ग्राफिकल भी है। मैं चिंतित हूं कि सीएलआर या जेआईटी में 64 बिट विंडोज (.NET 3.5sp1 का उपयोग कर) पर चल रहे अन्य छिपे हुए मुद्दे क्या हो सकते हैं।
- (Now I know that) गुण, यहां तक कि स्वत: गुण, 64 में inlined नहीं मिलता:
यहाँ कुछ मुद्दों मैं वर्तमान के बारे में पता कर रहा हूँ कर रहे हैं।
- आवेदन परिवर्तन की स्मृति प्रोफ़ाइल, size of references की वजह से दोनों, लेकिन यह भी स्मृति allocator अलग प्रदर्शन विशेषताओं है क्योंकि
- Startup times can suffer on x64
मुझे पता है कि अन्य क्या, विशिष्ट, लोगों को जारी करता है करना चाहते हैं 64 बिट विंडोज़ पर जेआईटी में खोजा है, और यदि प्रदर्शन के लिए कोई कामकाज भी है।
सभी को धन्यवाद!
---- संपादित करें -----
बस स्पष्ट करने के लिए -
मुझे पता है कि जल्दी अनुकूलित करने की कोशिश अक्सर खराब है हूँ। मुझे पता है कि सिस्टम का दूसरा अनुमान अक्सर खराब होता है। मुझे यह भी पता है कि 64 बिट के पोर्टेबिलिटी के अपने मुद्दे हैं - हम रोज़ाना 64 बिट सिस्टम पर चलने और परीक्षण करने के लिए परीक्षण करते हैं। आदि
मेरा आवेदन, हालांकि, आपका सामान्य व्यावसायिक अनुप्रयोग नहीं है। यह एक वैज्ञानिक सॉफ्टवेयर एप्लीकेशन है। हमारे पास कई प्रक्रियाएं हैं जो एक समय में सभी कोरों (यह अत्यधिक थ्रेडेड) पर 100% सीपीयू का उपयोग कर बैठती हैं।
मैं आवेदन को प्रोफाइल करने में बहुत समय व्यतीत करता हूं, और इससे बड़ा अंतर आता है। हालांकि, अधिकांश प्रोफाइलर जेआईटी की कई विशेषताओं को अक्षम करते हैं, इसलिए जब आप एक प्रोफाइलर के तहत चल रहे हों तो जेआईटी, आदि में रेखांकित स्मृति आवंटन जैसी चीजों में छोटे विवरण को पिन करना बहुत मुश्किल हो सकता है। इसलिए सवाल की मेरी ज़रूरत है।
यदि यह शीर्षक .NET 32- और 64-बिट रनटाइम को संदर्भित किया गया है तो यह धागा बहुत उपयोगी होगा (Google या Stacko-Search, आदि के साथ ढूंढना आसान है)। –