System.Diagnostics.StackFrame प्रदर्शन गिरावट
यदि आप विंडोज 10 या .NET फ्रेमवर्क 4.7.1 में अपग्रेड करने के बाद, System.Diagnostics.StackFrame क्लास का उपयोग करने वाले .NET फ्रेमवर्क एप्लिकेशन चलाते समय प्रदर्शन में उल्लेखनीय कमी देखते हैं, तो यह पोस्ट आपकी रुचि हो सकती है। हम कारण देखेंगे, और फिर त्रुटि के लिए ज्ञात सुधार प्रदान करेंगे।
कारण
विंडोज 10 में .NET फ्रेमवर्क 4.7.1 ने स्टैक ट्रेस में फ़ाइल और लाइन नंबर जानकारी दिखाने के लिए पोर्टेबल PDB फ़ाइल फॉर्मेट का पता लगाने और पार्स करने के लिए समर्थन जोड़ा। इस परिवर्तन के हिस्से के रूप में, स्टैक ट्रेस में प्रत्येक फ़ंक्शन के अपने परिभाषित मॉड्यूल की जांच की जाती है ताकि यह निर्धारित किया जा सके कि वह मॉड्यूल पोर्टेबल PDB फॉर्मेट का उपयोग करता है या नहीं। आंतरिक कैशिंग पॉलिसी में कुछ अंतरों के कारण, रनटाइम पोर्टेबल PDB खोजने में पिछले .NET फ्रेमवर्क संस्करणों की तुलना में कहीं अधिक समय खर्च करता है जो क्लासिक विंडोज PDB खोजने में खर्च करता था।
इससे फॉर्मेटेड स्टैक ट्रेस पहले की तुलना में अधिक धीरे-धीरे उत्पन्न होते हैं।
यह समस्या फेंके गए अपवादों की संख्या को नहीं बदलती। हालांकि, यह उन अपवादों को संभालने के लिए एप्लिकेशन की क्षमता को काफी कम कर देती है।
IKVM लाइब्रेरी का उपयोग करने वाले एप्लिकेशन इस समस्या से प्रभावित होते हैं यदि वे असेंबली के लिए जांच करते हैं। असेंबली की जांच करने से अपवाद पैदा होते हैं।
System.Diagnostics.StackFrame प्रदर्शन गिरावट समस्या ठीक करें
इस समस्या को हल करने के लिए, माइक्रोसॉफ्ट निम्न में से किसी भी विधि का उपयोग करने की सिफारिश करता है।
1. StackFrame के लिए एक अलग कंस्ट्रक्टर का उपयोग करें जो बूलियन तर्क लेता है
यह पसंदीदा समाधान है।
यदि एप्लिकेशन डेवलपर्स अपने एप्लिकेशन में परिवर्तन करने में सक्षम हैं, तो System.Diagnostics.StackTrace.#ctor(Boolean) कंस्ट्रक्टर को कॉल करें और सोर्स जानकारी कैप्चर करने से बचने के लिए false तर्क का उपयोग करें। यह कोड के उस खंड से बचाता है जिसमें प्रदर्शन कम हो जाता है।
2. पिछले संस्करण पर रोलबैक करें या नवीनतम विंडोज 10 संस्करण में अपग्रेड करें
इस विधि में, यदि आप इस समस्या का अनुभव कर रहे हैं और वर्तमान में विंडोज 10 का नवीनतम संस्करण नहीं चला रहे हैं, तो विंडोज 10 के पिछले संस्करण/बिल्ड पर वापस जाएं या नवीनतम संस्करण/बिल्ड में अपग्रेड करें। साथ ही, यदि मौजूद हो तो अपने कंप्यूटर से .NET फ्रेमवर्क 4.7.1 को अनइंस्टॉल करें और फिर .NET फ्रेमवर्क का पिछला संस्करण या नवीनतम संस्करण डाउनलोड और इंस्टॉल करें।
आशा है इससे मदद मिलेगी!