2015-05-04 20 views
14

में RyuJIT को सक्षम करने के लिए विजुअल स्टूडियो 2015 आरसी 1 स्थापित करने के बाद, मैंने एक विरासत एएसपी.नेट परियोजना लोड की है और .NET संस्करण को 4.6 में बदल दिया है। परियोजना ठीक काम करती है, लेकिन वेबसाइट अभी भी धीमी गति से लोड होती है। मैं RyuJIT को लात मारने की उम्मीद कर रहा था, लेकिन स्पष्ट रूप से यह नहीं है।विजुअल स्टूडियो 2015 आरसी

मैंने RyuJIT के बारे में this thread पर एक नज़र डाली है और मुझे वहां वर्णित किसी भी तरीके से RyuJIT का कोई निशान नहीं दिख रहा है।

एक ही समस्या एक खाली कंसोल परियोजना के साथ भी होती है। मैं आउटपुट विंडो, मॉड्यूल विंडो या एक चल रहे विंडोज़ कार्य के रूप में Ryujit नहीं देख सकता।

तो या तो RyuJIT का पता नहीं लगाया जा सकता क्योंकि यह पहले के पूर्वावलोकन में होता था, या यह नहीं चल रहा है। किसी भी तरह से, मैं अटक गया हूँ।

मैं कैसे सत्यापित कर सकता हूं कि RyuJIT वीएस 2015 में चल रहा है और यदि ऐसा नहीं है तो इसे चलाने के लिए मुझे क्या करना है?

+0

आपको पता है कि RyuJIT केवल 64-बिट है? शायद आप 32-बिट के रूप में चल रहे हैं? – leppie

+0

@leppie: मैं विंडोज 8.1 x64 पर काम कर रहा हूं। कंसोल परियोजना में। "32 बिट पसंद करें" चेकबॉक्स अनचेक किया गया है, इसलिए मुझे लगता है कि यह 64 बिट का उपयोग कर रहा है। एएसपी.नेट परियोजना में, चेकबॉक्स गहरा हुआ है, यह सुनिश्चित नहीं है कि इसका क्या अर्थ है। –

+0

.NET 4.6 में इसका उपयोग करने के लिए कोई विकल्प नहीं है, इसका उपयोग हमेशा 64-बिट कोड को जिट करने के लिए किया जाता है। * गति की उम्मीद नहीं है * यह परियोजना का लक्ष्य नहीं था। –

उत्तर

6

सबसे पहले, प्रोजेक्ट की सेटिंग्स पर जाएं, डीबग टैब पर जाएं और सुनिश्चित करें कि मूल कोड डिबगिंग सक्षम है। यह आपको विजुअल स्टूडियो की मॉड्यूल विंडो में देशी और प्रबंधित निष्पादन योग्य देखने में सक्षम बनाता है।

अब प्रोग्राम को डीबग या रिलीज़ मोड में चलाएं और मॉड्यूल विंडो खोलें। आप दो चीजों में से एक देखेंगे:

  • या तो केवल clrjit.dll लोड किया गया है जिसका अर्थ है कि सभी प्रबंधित कोड संकलित करने के लिए RyuJIT का उपयोग किया जा रहा है।
  • या दोनों clrjit.dll और compatjit.dll लोड किए गए हैं जिसका अर्थ है कि विरासत JIT64 कंपाइलर का उपयोग को आपके प्रबंधित कोड को संकलित करने के लिए किया जा रहा है जबकि अन्य निष्पादन योग्य में प्रबंधित कोड या तो कंपाइलर का उपयोग कर सकता है।

compatjit.dll लोड किया गया है जब fallback mechanism सक्षम है। अन्यथा, यह लोड नहीं है।

ध्यान दें कि यदि आपने .NET 4.6 (उर्फ .NET 2015) स्थापित किया है, तो यदि आप ढांचे के पुराने संस्करणों को लक्षित करते हैं तो भी RyuJIT डिफ़ॉल्ट रूप से उपयोग किया जाएगा।

RyuJIT बनाम JIT64 के बारे में। जेआईटी 64 का जेनरेट कोड स्वयं ही RyuJIT द्वारा उत्पन्न कोड से तेज़ है। इसलिए इस पहलू में प्रदर्शन सुधार की उम्मीद न करें। दूसरी ओर, संकलन समय बदलता रहता है। Microsoft के अनुसार, RyuJIT का संकलन समय JIT64 से 30% तक और धीमी तक 15% तक तेज हो सकता है। तो इस पहलू में प्रदर्शन सुधार की अपेक्षा न करें।

चीजें थोड़ा बदल सकती हैं, हालांकि, जब .NET 2015 जारी किया जाता है।

नोट

लक्ष्य मंच है "किसी भी सीपीयू", "पसंद करते हैं 32-बिट" बिल्ड टैब में बॉक्स जांचा हो गया है। अन्यथा, x86 जेआईटी का उपयोग किया जाएगा।

+0

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

6

यहाँ आप

जाना स्थापना के बाद, वहाँ RyuJIT को चालू करने के दो तरीके हैं। यदि आप केवल एक एप्लिकेशन के लिए RyuJIT को सक्षम करना चाहते हैं, तो एक पर्यावरण चर सेट करें: COMPLUS_AltJit = *। यदि आप अपनी पूरी मशीन के लिए RyuJIT को सक्षम करना चाहते हैं, तो रजिस्ट्री कुंजी HKLM \ सॉफ़्टवेयर \ Microsoft.NETFramework \ AltJit स्ट्रिंग "*" पर सेट करें। दोनों तरीकों से 64-बिट सीएलआर जेआईटी 64 के बजाय RyuJIT का उपयोग करने का कारण बनता है। और दोनों अस्थायी सेटिंग्स स्थापित RyuJIT अपनी मशीन के लिए कोई स्थायी परिवर्तन नहीं करता है (एक निर्देशिका में RyuJIT फ़ाइलों को स्थापित करने से अलग है कि है।) कर रहे हैं

से .NET Framework 4.6 - Testing with RyuJIT

लिया लेकिन यह होना चाहिए डिफ़ॉल्ट रूप से सक्रिय

.NET Framework 4.6 में 64-बिट प्रक्रियाओं के लिए नया जस्ट-इन-टाइम (जेआईटी) कंपाइलर शामिल है, जिसे RyuJIT कहा जाता है। इसे बाई दिफ़ौल्ट मर्थकृत किया गया है। यह अभी भी एक पूर्वावलोकन संस्करण है, इसलिए आप उन समस्याओं को खोज सकते हैं जिन्हें अभी तक तय नहीं किया गया है।

से .NET Framework 4.6 - Testing with RyuJIT

लिया प्रयोजनों के परीक्षण के लिए यदि आप RyuJIT के साथ किसी भी अपवाद encouter, आप इसे app.config में एक सेटिंग के साथ बंद कर सकते हैं के लिए। यह पुराने JIT64 का उपयोग करता है।

<configuration> 
<runtime> 
    <useLegacyJit enabled="1"> 
</runtime> 
</configuration> 

हालांकि, RyuJIT CTP5 वर्तमान दृश्य स्टूडियो "14" CTP4 पर काम नहीं करता। आपको वैसे भी इसकी आवश्यकता नहीं है, क्योंकि विजुअल स्टूडियो "14" सीटीपी 4 पर डिफ़ॉल्ट रूप से RyuJIT सक्षम है। :) (दृश्य स्टूडियो में RyuJIT के संस्करण "14" CTP4 ज्यादा से इस सीटीपी की तुलना में थोड़ा पुराना है, लेकिन नहीं।)

मैं एक ऐसे ब्लॉग पोस्ट पाया के दौरान इस्तेमाल किया JIT निर्धारित करने के लिए से RyuJIT CTP5: Getting closer to shipping, and with better SIMD support

लिया रनटाइम, लेकिन यह डेन जेआईटी 64 कंपाइलर में एक ज्ञात बग खाता है। उदाहरण कोड here पोस्ट किया गया है। मुझे यकीन नहीं है कि यह निर्धारित करने का एक विश्वसनीय तरीका है या नहीं।

+0

आपके उत्तर के लिए धन्यवाद!उस मामले में मुझे आश्चर्य है कि क्यों RyuJIT संकलन गति के मामले में कुछ भी नहीं लगता है। क्या आपको कोई विचार है कि यह मामला क्यों हो सकता है? –

+0

@AdrianGrigore: नहीं, मुझे यकीन नहीं है। आपकी परियोजना के लिए प्लेटफार्म लक्ष्य निर्धारित किया गया है? AnyCPU, x64? – Jehof

+0

हां। परियोजना x64 पर सेट है, "32 बिट पसंद करें" अक्षम है और यह परियोजना विंडोज 8.1 x64 पर आईआईएस में चल रही है। साथ ही, यदि मैं बिल्ड लक्ष्य को x86 पर सेट करता हूं, तो आईआईएस इसे चलाने से इंकार कर देता है। –

0

RyuJIT कोड संकलित करते समय स्वचालित रूप से सक्रिय हो जाता है और यह केवल एक संकलक है जो 64 बिट मोड पर चलाया जाता है जो आपके संकलन को बढ़ावा देने के लिए रैम की पहुंच के साथ 30% तेज और जेआईटी कंपाइलर में बिताए गए समय स्टार्टअप समय का केवल एक घटक है, तो ऐप सिर्फ दो गुना तेजी से शुरू नहीं होता है क्योंकि जेआईटी दो गुना तेज है।

आप अपनी वर्तमान रैम मेमोरी स्थिति और मुफ्त उपलब्ध स्मृति के साथ चल रही प्रक्रिया की जांच कर सकते हैं यदि यह पर्याप्त है तो इसे तेजी से चलाना चाहिए अन्यथा स्मृति आवंटन पर विचार करने का समय है।

+0

संकलन समय कम नहीं किया गया है क्योंकि मैंने वीएस 2015 आरसी स्थापित किया था। मैं 16 जीबी रैम वाले कंप्यूटर पर काम कर रहा हूं, जिसमें लगभग 5 जीबी अतिरिक्त मेमोरी उपलब्ध है, इसलिए मुझे नहीं लगता कि राम की कमी समस्या है। –

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