2008-08-18 11 views
10

मुझे पता है कि .NETJIT आपके द्वारा चलाए जाने वाले आर्किटेक्चर पर संकलित आर्किटेक्चर के लिए संकलित है, लेकिन क्या जेआईटी कंपाइलर 64 बिट आर्किटेक्चर के लिए ऑप्टिमाइज़ करता है?64 बिट .NET प्रदर्शन ट्यूनिंग

क्या ऐसी कोई चीज है जिसे 64bit system पर चलने वाले ऐप प्रोग्रामिंग के दौरान किया जाना चाहिए या माना जाना चाहिए? (यानी इंटेल 64 का प्रदर्शन बेहतर प्रदर्शन करेगा और क्या जेआईटी कंपाइलर स्वचालित रूप से 32 बिट सिस्टम पर इंट 64 काम करेगा?)

उत्तर

14

64bit JIT is different 32 बिट के लिए एक से, इसलिए मुझे आउटपुट में कुछ अंतर की उम्मीद होगी - लेकिन मैं इसके लिए 64 बिट पर स्विच नहीं करूंगा, और मुझे सीपीयू में ज्यादा गति (यदि कोई हो) हासिल करने की उम्मीद नहीं होगी 64 बिट पर स्विच करके समय।

यदि आपका ऐप बहुत मेमोरी का उपयोग करता है और पीसी के साथ रखने के लिए पर्याप्त रैम है तो आपको एक बड़ा प्रदर्शन सुधार दिखाई देगा। मुझे पता चला है कि 32 बिट .NET ऐप्स मेमोरी अपवादों से बाहर निकलने लगते हैं जब आप 1.6 जीबी उपयोग में आते हैं, लेकिन वे paging के कारण डिस्क को तोड़ने लगते हैं - ताकि आप I/O बाध्य हो जाएं।

असल में, यदि आप बाधा हैं तो सीपीयू है तो 64 बिट की मदद करने की संभावना नहीं है। यदि आपकी बाधा स्मृति है तो आपको एक बड़ा सुधार देखना चाहिए।

का उपयोग कर देगा Int64 प्रदर्शन में सुधार और JIT कम्पाइलर स्वचालित रूप से 32 बिट सिस्टम पर Int64 काम

Int64 पहले से ही दोनों 32bit और 64bit सिस्टम पर काम करता है, लेकिन यह 64 बिट पर तेजी से चल रहा है हो जाएगा। तो यदि आप इंटी 64 के साथ ज्यादातर संख्या क्रंचिंग कर रहे हैं, तो 64 बिट सिस्टम पर चलने से मदद मिलनी चाहिए।

सबसे महत्वपूर्ण बात measure आपके प्रदर्शन के लिए सबसे महत्वपूर्ण बात है।

0

प्रदर्शन बाधाएं इस पर ध्यान दिए बिना कि वास्तुकला 32- या 64-बिट है या नहीं। प्रदर्शन समस्याएं उप-इष्टतम एल्गोरिदम का परिणाम होती हैं — 32- और 64-बिट प्रकारों के बीच की पसंद प्रदर्शन को महत्वपूर्ण रूप से प्रभावित नहीं करेगी।

सबसे महत्वपूर्ण बात यह है कि, इसे मापने से पहले कुछ के प्रदर्शन में सुधार करने की कोशिश न करें। विशेष रूप से आपको यह निर्धारित करने के लिए कोड को प्रोफ़ाइल करना चाहिए कि आपकी प्रदर्शन बाधाएं कहां हैं।

9

This 64 बिट जेआईटी पर काम करने वाले लोगों में से एक द्वारा विषय पर एक अच्छा लेख है। असल में, जब तक आपको 64 बिट की पेशकश की जाने वाली पता स्थान की आवश्यकता नहीं होती है, या 64 बिट गणित करने की आवश्यकता होती है, तो आप शायद प्रदर्शन खो देंगे। चूंकि पॉइंटर्स बड़े होते हैं, उदाहरण के लिए कैश प्रभावी रूप से कम हो जाता है।

6

मैंने देखा है कि 64-बिट बहुत धीमी है।

जैसा कि कहा गया है कि 64-बिट जेआईटी कंपाइलर x86 जेआईटी कंपाइलर के लिए अलग-अलग व्यवहार करता है। X86 कंपाइलर कुछ अनुकूलन का लाभ उठाएगा जो x64 कोई नहीं करता है।

उदाहरण के लिए .NET 3.5 में 32-बिट जेआईटी इनलाइन फ़ंक्शन को structs के साथ तर्क के रूप में कॉल करेगा, लेकिन 64-बिट जेआईटी नहीं है।

उत्पादन कोड में मैं 86 देखा है के रूप में ज्यादा के रूप में 20% से अधिक तेजी से 64 (कोई अन्य बदलाव के साथ) बनाता है

3

सारांश में चल रहा है बनाता है, का उपयोग 64-बिट केवल तभी

  1. आप की जरूरत है अतिरिक्त स्मृति और इसके चारों ओर कोई रास्ता नहीं है।
  2. आप प्रोग्राम उदा। वैज्ञानिक ऐप्स और बढ़ी गणित परिशुद्धता की आवश्यकता है

आज के रूप में, .NET में 64-बिट कंपाइलर एक चरण नीचे है।

.NET कंपाइलर्स में किए गए प्रदर्शन अनुकूलन एक बड़ी समस्या है।