2012-01-19 12 views
8

मान लें कि मैं HTML5 कैनवास के साथ कुछ एनिमेशन कर रहा हूं। मैं एक वस्तु की विधि है, जो बेहतर होगा चेतन करने के लिए देख रहा हूँ, तो प्रदर्शन बुद्धिमान (यह मानते हुए मैं IE8 के बारे में परवाह नहीं है):ऑब्जेक्ट विधि पर सेटटाइमआउट - ES5 बांधें, या बंद करें?

setTimeout(this.render.bind(this), 15); 

या

var self = this; 
setTimeout(function() { self.render() }, 15); 

मेरे विशेष मामला नहीं है सचमुच एक अंतर को दृष्टि से बनाने के लिए पर्याप्त तीव्र; मैं बस सबसे अच्छा अभ्यास खोजने की कोशिश कर रहा हूँ।

मुझे लगता है कि bind के साथ एक नया फ़ंक्शन बनाने से बंद होने से कम ओवरहेड होगा, लेकिन मैं विशेषज्ञों से पूछना चाहता था।

+1

यह मेरे लिए अनुकूलन की तरह गंध करता है, फिर मुझे नहीं पता कि आपकी समस्या क्या है, लेकिन मुझे लगता है कि यह कहना सुरक्षित है कि 75% समय इससे कोई फर्क नहीं पड़ता – mkoryak

+0

वे दोनों बंद हो जाते हैं, केवल अंतर ही गुंजाइश है उन कार्यों में बाध्य हैं ... –

+2

@mkoryak - यदि आप अधिक काम कर रहे हैं तो यह केवल ओवर-ऑप्टिमाइज़ेशन है। दोनों लागू करने के लिए तुच्छ हैं, और मैं सोच रहा था कि कौन सा (संभावित रूप से) अधिक प्रदर्शनकारी है। –

उत्तर

5

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

आपका बंद होना वास्तव में बहुत तेज़ होना चाहिए; आखिरकार, सभी कार्य बंद हो जाते हैं और आपके self चर को तत्काल संदर्भ में परिभाषित किया जाता है (इसलिए इसके लिए स्कोप श्रृंखला के माध्यम से बहुत कुछ नहीं दिख रहा है)।

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

क्या इससे कोई फर्क पड़ता है? नहीं। मैं इसका उपयोग करता हूं जो आपको समझ में आता है। ध्यान दें कि आईई 8 एकमात्र ऐसा ब्राउज़र नहीं है जिसमें अभी तक ईएस 5 फीचर्स न हों (हालांकि आप हमेशा ईएस 5 शिम्स में से एक का उपयोग कर सकते हैं; कुछ ईएस 5 फीचर्स के विपरीत, bind ईएस 3 कोड   — में शिम्स द्वारा पूरी तरह से नकल किया जा सकता है ऐसा करने के लिए उन्हें call/apply का उपयोग करना होगा, जो कुछ इंजनों पर बंद होने से धीमा हो सकता है)।

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