2010-10-14 31 views
7

यदि वे लगातार पृष्ठभूमि में चल रहे हैं (अंतराल की परवाह किए बिना) में कितने ओवरहेड टाइमर होते हैं?आवेदन में टाइमर का ओवरहेड सी #

मैं टाइम्स के बारे में चिंतित नहीं हूं जब टाइमर इसे टिकेगा, लेकिन अनुप्रयोगों में टाइमर का उपयोग करने के प्रदर्शन प्रभावों के बारे में, जहां प्रदर्शन अत्यंत महत्वपूर्ण है और यह जानने में दिलचस्पी है कि इस पर क्या विचार हैं ।

+0

.net http://msdn.microsoft.com/en-us/magazine/cc164015.aspx में ऐसे कई प्रकार हैं जिनके बारे में आप बात कर रहे हैं? – Andrey

+0

वैसे मैं सामान्य रूप से टाइमर का जिक्र कर रहा था - लेकिन वर्तमान एप्लिकेशन जहां मैं सबसे ज्यादा चिंतित था, सिल्वरलाइट एप्लिकेशन है इसलिए मैं डिस्पैचर टिमर का उपयोग करूंगा। धन्यवाद – Madeleine

उत्तर

8

टाइमर, इसके टिकों के बीच, एप्लिकेशन को बेहद कम लागत जोड़ता है। यह सिस्टम की घड़ी को लगातार मतदान करने की अंतर्ज्ञानी अवधारणा के विपरीत शेड्यूलिंग (जो आपके कार्यों के बावजूद सक्रिय है) के लिए ओएस के तंत्र का उपयोग करता है।

मूल रूप से, अन्यथा अतिरिक्त मेमोरी और संदर्भ स्विच डेटा जोड़ (इस मामले में मामूली जोड़। आपके फॉर्म में बटन जोड़ने के बाद और अधिक नहीं होना चाहिए) और कोई ओवरहेड नहीं होना चाहिए।

+1

जब टाइमर और थ्रेडिंग की बात आती है, तो "पूलिंग" और "मतदान" दो अलग-अलग शब्द होते हैं जिन्हें किसी को सही वर्तनी के लिए सावधान रहना चाहिए;) – d7samurai

+0

व्हाउप्स! मेरी गलती। धन्यवाद, @ डी 7 एसमुराई। – Neowizard

+0

"शेड्यूलिंग के लिए ओएस का तंत्र" जिसे आप उल्लेख करते हैं उसे एक [** संदेश लूप **] (https://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows) कहा जाता है जो संदेशों को कतारबद्ध करता है। एप्लिकेशन में एक ईवेंट लूप है जो उस संदेश कतार से संदेश प्राप्त करता है। – BornToCode

0

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

मुख्य धागे में प्रदर्शन को बनाए रखने के लिए, मैं इसके बजाय BackgroundWorker का उपयोग करने का सुझाव देता हूं जो इसके अपने धागे में चलता है।

+0

.net http://msdn.microsoft.com/en-us/magazine/cc164015.aspx में ऐसे कई प्रकार हैं जिनके बारे में आप बात कर रहे हैं? – Andrey

+0

मैं ऊपर दिए गए मेरे कथन के साथ System.Windows.Forms.Timer का जिक्र कर रहा था। –

0

इसी तरह उत्तर देने के लिए: टाइमर गुई प्रोग्रामिंग के लिए अमूल्य हैं, लेकिन उच्च प्रदर्शन कार्यों के लिए बहुत अधिक बेकार हैं। टाइमर के साथ कुछ मुद्दों:

  • वे मिलीसेकंड (विंडोज़ में वास्तव में, कुछ भी नहीं है) करने के लिए नियमित रूप से नहीं कर रहे हैं - यह सक्रिय होगा जब अपने समय है, लेकिन जब अन्य सभी संदेश (माउस-कीबोर्ड की घटनाओं, नियंत्रण अपडेट) कार्रवाई की जाती है, क्योंकि यह जीयूआई को
  • .net कार्यान्वयन नहीं जानते से अन्य संदेश/साथ धारावाहिक है, लेकिन वे MFC में हैंडल बर्बाद

आप कुछ ऑपरेशन के लिए एक और धागा पर विचार कर रहे हैं, तो यह सुनिश्चित कर लें कि आप इससे किसी भी gui घटक को छू नहीं है। कुछ कतार में गुई के लिए या तो Invoke() या प्रतिलिपि अद्यतनों का उपयोग करें, फिर इसे गुई मुख्य थ्रेड से टाइमर के साथ हटा दें।

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