७ लपलेले JavaScript बॉटलनेक्स आणि ते कसे सुधारावे

संथ वेब ॲप्स सहसा खराब अल्गोरिदममुळे निकामी होत नाहीत. ते तुमचे कोड ब्राउझरशी कशा प्रकारे संवाद साधतात या कारणास्तव निकामी होतात.

मी ३०० प्रोडक्शन ॲप्लिकेशन्सचे प्रोफाईलिंग केले. ७३% परफॉर्मन्सच्या समस्या या ७ स्रोतांमुळे उद्भवतात.

१. Layout thrashing जेव्हा तुम्ही एखादी प्रॉपर्टी वाचता (read), DOM मध्ये काहीतरी लिहिता (write) आणि पुन्हा वाचता, तेव्हा हे घडते. यामुळे ब्राउझरला वारंवार लेआउट पुन्हा मोजण्यास (recalculate) भाग पाडले जाते.

२. Unbounded event listeners इव्हेंट लिसनर (event listener) जोडल्यानंतर तो काढून न टाकल्यामुळे मेमरी लीक (memory leaks) होतात. सिंगल-पेज ॲप्समध्ये ही एक मोठी समस्या आहे.

३. लूपमध्ये सिंक्रोनस DOM reads लूपच्या आत offsetWidth किंवा getBoundingClientRect वाचल्यामुळे सतत रिफ्लो (reflows) होतात.

४. requestAnimationFrame बॅचिंगचा अभाव स्क्रोल किंवा रिसाईज इव्हेंट्सवर थेट DOM बदल केल्यामुळे ते खूप वारंवार घडतात. यामुळे jank निर्माण होतो.

५. मोठ्या JSON.parse पेलोड्स मोठ्या फाईल्स पार्स (parse) केल्यामुळे मेन थ्रेड ब्लॉक होतो. यामुळे इनपुट लॅग (input lag) निर्माण होतो.

६. गुंतागुंतीचे CSS selector मॅचिंग खोलवर नेस्टेड किंवा गुंतागुंतीचे सिलेक्टर्स स्टाईल रिकॅल्क्युलेशनचा वेग कमी करतात.

७. डुप्लिकेट बंडल चंक्स (Duplicate bundle chunks) मोठे आणि अनऑप्टिमाइझ्ड बंडल्स ट्रान्सफर वेळेचा अपव्यय करतात.

तुमची प्रगती कशी मोजायची:

या क्षेत्रांमध्ये सुधारणा केल्यामुळे तुमचे Core Web Vitals सुधारतात, विशेषतः Largest Contentful Paint आणि Interaction to Next Paint.

स्रोत: https://dev.to/kui_luo/how-to-find-and-fix-7-hidden-performance-bottlenecks-in-your-javascript-code-ek5