मेरे पास एक ऐसा एप्लिकेशन है जिसमें 4 धागे हैं। प्रत्येक धागा वास्तव में टाइमर है और विशिष्ट अंतराल में एक अलग नौकरी करता है। ये धागे Console.Writeline
का उपयोग करके अपने लॉग दिखाते हैं। इस एप्लिकेशन में प्रदर्शन बहुत महत्वपूर्ण है। मैं जानना चाहता था कि Console.Writeline
को हटाने से इस एप्लिकेशन के प्रदर्शन को ट्यून किया जाएगा या नहीं?कंसोल। प्रदर्शन पर राइटलाइन प्रभाव
उत्तर
वहाँ प्रदर्शन के संबंध में Console.WriteLine साथ दो मुद्दों हो सकता है:
आईओ आम तौर पर एक "तेज" आपरेशन नहीं है।
लिखने के लिए कॉल सिंक्रनाइज़ किए गए हैं, यानी यदि दो धागे लिखना चाहते हैं, तो उनमें से एक लिखितलाइन पर लिखने के लिए दूसरे को लिखने के लिए इंतजार कर रहा है। MSDN on console से:
आई/ओ आपरेशन है कि इन धाराओं का उपयोग सिंक्रनाइज़ किए जाते हैं, जिसका अर्थ है कि एक से अधिक थ्रेड से पढ़ सकते हैं, या करने के लिए, स्ट्रीम लिख।
यह कहा गया कि कंसोल पर बिताए गए समय को समझने का एकमात्र तरीका है। राइटलाइन का आपके विशिष्ट अनुप्रयोग के प्रदर्शन पर असर पड़ रहा है। अन्यथा यह समयपूर्व अनुकूलन है।
यदि यह डीबगिंग उद्देश्य के लिए है, तो आपको इसका उपयोग करना चाहिए: Debug.WriteLine, क्योंकि इन्हें रिलीज़ संस्करण में शामिल नहीं किया गया है।
देखें मुझे नहीं लगता कि यह ओपी के प्रश्न का उत्तर कैसे देता है। आप एक ऐप के रिलीज़ संस्करण से लॉगिंग आउटपुट भी इकट्ठा करना चाहते हैं, और वैसे भी यह बिंदु के बगल में है कि लॉगिंग का उद्देश्य क्या है। – millimoose
आप Trace.WriteLine का उपयोग कर सकते हैं, http://stackoverflow.com/questions/179868/trace-vs-debug-in-net-bcl –
हां, कंसोल निष्पादित करना। राइटलाइन में मापने योग्य समय लगता है।
कंसोल को हटा रहा है। राइटलाइन कॉल या डेटा लिखने वाले बफर्ड पृष्ठभूमि थ्रेड में इसे बदलकर वास्तव में एप्लिकेशन को तेज़ कर देगा।
हालांकि आपके बाजरे उपयोग में ओएस के आधार पर भिन्न हो सकते हैं।
पृष्ठभूमि थ्रेड पर कतार के साथ एकमात्र समस्या यह है कि लॉगिंग नहीं है अब सटीक और धागे पहले ही समाप्त हो चुके हैं, और फिर भी लॉगिंग कंसोल पर लिखी गई है। –
@JeroenvanLangen यह शायद ही एकमात्र समस्या है। आपको यह विचार करना होगा कि लॉगिंग थ्रेड की प्राथमिकता क्या होगी। यदि यह कार्यकर्ता धागे से अधिक है, तो यह बिल्कुल मदद नहीं करेगा। यदि यह कार्यकर्ता धागे से कम है, तो बफर सीमा से बाहर हो सकता है और आपका एप्लिकेशन स्मृति से बाहर हो जाएगा, या थ्रेड एक निश्चित-क्षमता बफर पर प्रतीक्षा कर सकते हैं। अनिवार्य रूप से, इस पर काम करने के लिए आपको निश्चित रूप से यह पता होना चाहिए कि आवेदन में buffered लॉगिंग आउटपुट लिखने के लिए पर्याप्त "डाउनटाइम" है। – millimoose
- 1. log4net लॉगिंग डीबग। राइटलाइन और कंसोल। राइटलाइन
- 2. कंसोल। राइटलाइन आउटपुट विंडो
- 3. कंसोल कंसोल। एकाधिक धागे से राइटलाइन
- 4. प्रदर्शन पर सिस्टमटैप प्रभाव
- 5. कंसोल। राइटलाइन() एक विंडोज सेवा के अंदर?
- 6. एंड्रॉइड का संस्करण सी # कंसोल। राइटलाइन?
- 7. कंसोल में प्रारूप स्ट्रिंग्स। राइटलाइन विधि
- 8. प्रदर्शन प्रभाव
- 9. डीबग। राइटलाइन() बनाम कंसोल। राइटलाइन() संस्कृति को अलग-अलग संभालती है। क्यूं कर?
- 10. कंसोल। राइटलाइन मेरे कोड को गति देता है?
- 11. कंपाइलर प्रदर्शन पर हाइपरथ्रेडिंग का प्रभाव?
- 12. क्या लिनक्स पर एसीएल प्रभाव प्रदर्शन
- 13. ईजिन: प्रदर्शन पर कोडिंग शैली का प्रभाव
- 14. jvmti का प्रदर्शन प्रभाव?
- 15. विंडोज अनुप्रयोग से कंसोल। राइटलाइन को एक स्ट्रिंग
- 16. कंसोल का उपयोग करना। विंडोज़ फॉर्म के भीतर राइटलाइन एप्लिकेशन
- 17. बड़े परमजन आकार + प्रदर्शन प्रभाव
- 18. कंसोल क्यों नहीं है। राइटलाइन, कंसोल। विजुअल स्टूडियो एक्सप्रेस में काम करें?
- 19. नेटडिनो नहीं "कंसोल। राइटलाइन", कंसोल वर्तमान संदर्भ में मौजूद नहीं है
- 20. वर्चुअल विधियों का प्रदर्शन प्रभाव
- 21. नेस्टिंग लैम्ब्डा फ़ंक्शंस - प्रदर्शन प्रभाव
- 22. आप उसी कंसोल पर इनपुट के लिए कैसे प्रतीक्षा करते हैं। राइटलाइन() लाइन?
- 23. सी # - क्या WebMethodAttribute प्रदर्शन पर प्रतिकूल प्रभाव डाल सकता है?
- 24. डेटाबेस प्रदर्शन पर सक्षम टीडीई के प्रभाव क्या हैं?
- 25. लैम्बडा के प्रदर्शन पर इंट्रिनिक्स का प्रभाव और इनलाइनिंग?
- 26. क्या नया ऑब्जेक्ट पर setPrototypeOf का प्रदर्शन प्रभाव है?
- 27. प्रदर्शन पर डेटाबेस के क्षेत्र का नाम लंबाई का प्रभाव?
- 28. प्रदर्शन पर कितना "if" कथन प्रभाव पड़ता है?
- 29. डीबग। राइटलाइन ने
- 30. एक्टिव्रेकॉर्ड प्रीलोडिंग प्रभाव के बाद प्रदर्शन degredation
निष्पादित नहीं किया गया प्रत्येक कोड प्रदर्शन में सुधार करेगा। चाहे यह महत्वपूर्ण है, एक और सवाल है - और बिना किसी विवरण के जवाब देना असंभव है। जिस तरह से आपके टाइमर आग लगते हैं, वे वास्तव में क्या अन्य काम करते हैं (जो पूरी तरह से 'कंसोल। राइटलाइन' कथन को बौना कर सकता है), और वे अन्य कोड द्वारा कितनी पहले ही सिंक्रनाइज़ (सिंक्रनाइज़) हैं। –
दरअसल यह –
डिबगिंग की निगरानी के लिए नहीं है, आपको यह क्यों पूछना है कि आप इसे आजमा सकते हैं, यह मुश्किल नहीं है ... उत्पादन वातावरण (प्रदर्शन के महत्व पर विचार करने के लिए), आपको केवल सबसे आवश्यक डीबग संदेश रखना चाहिए। –