2013-10-24 10 views
5

मुझे आश्चर्य है कि यह कोड क्लाइंट पर लोड करने जा रहा है क्योंकि टाइमआउट इतना लंबा है?सेटटाइमआउट() प्रदर्शन को प्रभावित करता है

 //and update this again in a bit 
     setTimeout(function() { 
      updateWeather(lat,lng); 
     }, 60000); 
+2

एक कम समय के लिए कुछ नहीं कर से एक मिनट के कारण अधिक लोड के लिए ध्यान देने योग्य बात क्यों कर रहे हैं? ;-) – RobG

+0

नहीं, यह नहीं है। हालांकि, एक बहुत छोटा समय हो सकता है: http://stackoverflow.com/a/18832977/1768303 – Noseratio

+1

कोई महत्वपूर्ण प्रभाव नहीं, 'setTimeout' किसी ईवेंट लूप में चलता है, यह निष्पादन को अवरुद्ध या नुकसान नहीं पहुंचाता है। –

उत्तर

2

ऐसा नहीं है कि अकेले कोड है। प्रणाली उस एक मिनट के लिए निष्क्रिय है। जब तक अपडेटवेदर के पास गंभीर प्रदर्शन समस्याएं नहीं होती हैं और अंतराल कम होता है, तो सेटटाइमआउट एक उत्पाद नहीं होगा (और मेरा मानना ​​है कि आपका मतलब है अंतराल, आवर्ती चेक के लिए सेटटाइमआउट नहीं)

+0

आपने अपना जवाब चुना क्योंकि आपने सेट इंटरवल का उल्लेख किया है - मुझे लगता है कि मुझे इस मामले में setInterval का उपयोग करना चाहिए, क्योंकि यह नमूना कोड वास्तव में फ़ंक्शन के अंत में अपडेट के अंदर हीदर फ़ंक्शन के अंदर है। क्या यह एक खराब idéa है, क्या setTimeout पर setInterval का उपयोग करने में कोई प्रदर्शन सुधार है या वे वही हैं, क्या अंतराल केवल इस आसान कॉल को करने का एक आसान तरीका है जो मैं करता हूं? –

+0

मैंने इसे स्वयं बेंचमार्क नहीं किया है, लेकिन लालित्य के मामले में, सेट इंटरवलल अच्छा है। मैं अब एक बेंचमार्क चलाऊंगा। – bobbybee

0

अपने प्रश्न का उत्तर पर निर्भर करता है:

  1. डिवाइस का उपयोग कर
  2. वातावरण इस पर अमल - कितनी बार आप इस

एक स्वसंपूर्ण setTimeout हैं पर अमल करते हैं ब्राउज़र को चोट नहीं पहुंचाओ; हालांकि, यदि आप बार-बार वही काम कर रहे हैं, तो इससे कोई फर्क पड़ता है।

अधिक अंतर्दृष्टि के लिए निम्नलिखित वेबसाइट पर एक नज़र ...

http://ejohn.org/blog/analyzing-timer-performance/

1

60 सेकंड टाइमर जादू द्वारा लागू किया गया है ओएस में: यह मूल रूप से इंतजार कर रहे 60 सेकंड के दौरान कोई CPU लोड नहीं जोड़ता है।

मुझे लगता है कि updateWeather() बाहरी संसाधन मतदान कर रहा है, इसलिए आपके प्रश्न का उत्तर सरल है "नहीं, यह ठीक है"। (जैसा कि मौसम नहीं बदलता है, अक्सर, मैं इसे 5 मिनट बना देता हूं, बैटरी जीवन पर नीचे टिप्पणी देखें।) (इससे भी बेहतर: देखें कि मौसम डेटा प्रदाता आपको एक फ़ील्ड देता है जब अगला अपडेट होगा हो सकता है, और एक setTimeout पर आधारित है कि का उपयोग करें।)

अन्य स्थितियों में, उदाहरण के लिए यदि आप उन 60 सेकंड के लिए डेटा के कुछ प्रकार का संग्रह किया गया है, और फिर जाने के लिए और एक ही बार में इसे संसाधित के लिए, यह एक चोटी का कारण बन सकता भारी भार का। जो उपयोगकर्ता द्वारा देखा जा सकता है (उदाहरण के लिए सभी एनिमेशन हर 60 सेकंड में एक बार झटकेदार होते हैं)। उस स्थिति में 5 सेकंड टाइमर का उपयोग करना बेहतर होता है, और एक समय में 5 सेकंड के डेटा को संसाधित करता है।

इसके विपरीत, यदि आप किसी मोबाइल डिवाइस पर नेटवर्क का उपयोग कर रहे हैं, तो आपको बैटरी जीवन पर विचार करना होगा: जागने-और-खोज-एक-कनेक्शन हावी हो सकता है। तो 60 सेकंड से 120 सेकंड तक मतदान समय बढ़ाकर सचमुच बैटरी जीवन दोगुना हो सकता है। इल्या ग्रिगोरिक ... अपनी पुस्तक, उच्च निष्पादन ब्राउज़र नेटवर्किंग, http://shop.oreilly.com/product/0636920028048.do में इस पर एक बहुत अच्छा अध्याय है यहाँ यह है: http://chimera.labs.oreilly.com/books/1230000000545/ch08.html#ELIMINATE_POLLING

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