2010-02-06 16 views
16

मुझे अतिरिक्त जावास्क्रिप्ट इवेंट बाइंडिंग (jQuery लाइव का उपयोग करके) के प्रदर्शन ओवरहेड को मापने की आवश्यकता है, ओवरहेड शायद सीपीयू लोड बढ़ाएगा और निष्पादन समय प्रोफाइलिंग से नोटिस करना बहुत कठिन होगा।जावास्क्रिप्ट अनुप्रयोगों के सीपीयू लोड को मापें

मैं जावास्क्रिप्ट एप्लिकेशन के दो अलग-अलग संस्करणों के बीच सीपीयू लोड अंतर को कैसे माप सकता हूं?

उत्तर

6

विश्लेषण के लिए एक और विकल्प dynaTrace Ajax edition है। रेसिग में quick overview of it here है। यह आईई के लिए विशिष्ट है (लेकिन ... यह ज्यादातर मामलों में सबसे खराब प्रदर्शन वाला है ...)

एक नज़र डालें, यदि आप आईई मुद्दों को देख रहे हैं तो कुछ सुझाव यहां महान हैं (कुछ इंट्रानेट ऐप्स इसे लॉक कर दिए गए हैं) फिर डायनाट्रेस एक उत्कृष्ट और अभी भी मुफ्त उपकरण है।

0

मुझे लगता है कि यह माप बहुत बोर्सर विशिष्ट होगा। यदि आप इसके साथ ठीक हैं, तो क्रोम ब्राउज़र में बिल्ड-इन डेवलपर टूल पर एक नज़र डालें। प्रदर्शन रिकॉर्ड करने और बाद में परिणामों की तुलना करने का एक विकल्प है। यहां Getting Started guide है (पर एक नज़र डालें वीडियो नीचे प्रोफाइलिंग और अनुकूलन)।

0

Chrome Dev Tools के बारे में @Ivan उत्तर के अलावा, मैं आपको क्रोम के Google Speed Tracer एक्सटेंशन को देखने की भी सलाह दूंगा।

2

क्रोम देव उपकरण बहुत अच्छे हैं, लेकिन चूंकि क्रोम ब्राउज़र नहीं है, इसलिए आपको कभी भी जेएस प्रदर्शन के बारे में चिंता करने की ज़रूरत है, और यह चीजों को बहुत अनुकूलित करता है, यह अन्य ब्राउज़रों की बाधाओं को खोजने में ज्यादा मदद नहीं करता है। IE 8 has dev tools जो आपको प्रोफ़ाइल देता है, ताकि आपको सामान्य फ़ायरबग प्रोफाइलर के अलावा उपयोगी लगे।

लेकिन आपकी स्थिति के बारे में, मुझे कहना है कि केवल एक घटना को बाध्य करने से अधिक CPU लोड नहीं होता है, मेमोरी समस्या अधिक होती है, लेकिन आपको चिंता करने की ज़रूरत नहीं है जब तक कि आप सामान्य से कुछ नहीं कर रहे हों तुम्हारे पन्ने पर।

इसके अलावा, अगर आप jQuery.live समारोह के बारे में विशेष रूप से चिंतित हैं, मुझे जल्दी से बताएं कि यह कैसे काम करता है: के आप $('#linksWrap a').live('click', fn);

  • यह एक, और केवल एक ईवेंट हैंडलर बनाता करना मान लें, और इसे #linkswrap से जोड़ता है।
  • जब आप किसी एक लिंक पर क्लिक करते हैं, तो क्लिक ईवेंट DOM पेड़ को बुलबुले करता है, अंत में #linkswrap तक पहुंच जाता है।
  • jQuery.live यह पता लगाता है कि यह वास्तव में किस लिंक से आया था। यह जानकारी ब्राउज़र इवेंट ऑब्जेक्ट में है।
  • jQuery.live लिंक कि

क्लिक किया गया था तो के संदर्भ में fn लागू होता है जैसा कि आप देख, यह वास्तव में बहुत कुशल है। ब्राउज़र केवल एक घटना को जोड़ता है, इसलिए स्मृति उपयोग कम है, और इसे लगातार नए तत्वों की जांच करने की आवश्यकता नहीं है, यह एक शांत तरीके से ईवेंट बबलिंग का उपयोग करता है।

वास्तव में कोई तर्क दे सकता है कि यदि आप किसी पृष्ठ पर हजारों घटनाओं को जोड़ रहे हैं, तो यह मानते हुए कि आप अच्छे चयनकर्ताओं का उपयोग कर रहे हैं। (उदाहरण के लिए.something .foo .bar.baz ट्रावर्सल और उत्साह से भरा हुआ का एक बहुत आवश्यकता है, लेकिन #parentOfTheLinks a.links त्वरित हो जाएगा)

0

सीपीयू भार तुलना करने के लिए एक गैर वैज्ञानिक लेकिन त्वरित तरीका के लिए, आप Chrome के कार्य प्रबंधक का शुभारंभ और विभिन्न टैब/विंडो में खोला दो संस्करणों हो सकता है। यदि आप ऑप्टिमाइज़ेशन कर रहे हैं तो यह आपकी मदद नहीं करेगा, लेकिन यह आपको एक नज़र में बता सकता है कि नया संस्करण कम CPU ले रहा है या नहीं।

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