7 پوشیدہ JavaScript Bottlenecks اور انہیں ٹھیک کرنے کا طریقہ

سست ویب ایپس (web apps) شاذ و نادر ہی خراب الگورتھم کی وجہ سے ناکام ہوتی ہیں۔ وہ اس وجہ سے ناکام ہوتی ہیں کہ آپ کا کوڈ براؤزر کے ساتھ کس طرح رابطہ کرتا ہے۔

میں نے 300 پروڈکشن ایپلی کیشنز کا پروفائلنگ (profiled) کیا۔ 73% کارکردگی کے مسائل ان 7 ذرائع سے پیدا ہوتے ہیں۔

  1. Layout thrashing یہ تب ہوتا ہے جب آپ ایک پراپرٹی پڑھتے ہیں، DOM میں کچھ لکھتے ہیں، اور پھر دوبارہ پڑھتے ہیں۔ یہ براؤزر کو بار بار لے آؤٹ (layout) دوبارہ کیلکولیٹ کرنے پر مجبور کرتا ہے۔
  1. Unbounded event listeners ایونٹ لسنر (event listener) شامل کرنے کے بعد اسے ہٹائے بغیر چھوڑ دینا میموری لیکس (memory leaks) کا باعث بنتا ہے۔ یہ سنگل پیج ایپس (single-page apps) میں ایک بڑا مسئلہ ہے۔
  1. لوپس میں Synchronous DOM reads لوپ کے اندر offsetWidth یا getBoundingClientRect پڑھنے سے مسلسل ری فلو (reflows) شروع ہو جاتے ہیں۔
  1. Missing requestAnimationFrame batching اسکرول (scroll) یا ریسائز (resize) ایونٹس پر براہ راست DOM تبدیلیاں بہت زیادہ بار ہوتی ہیں۔ اس سے جینک (jank) پیدا ہوتا ہے۔
  1. بڑے JSON.parse payloads بڑی فائلوں کو پارس (parse) کرنا مین تھریڈ (main thread) کو بلاک کر دیتا ہے۔ اس سے ان پٹ لیگ (input lag) پیدا ہوتا ہے۔
  1. پیچیدہ CSS selector matching گہرائی میں موجود یا پیچیدہ سلیکٹرز اسٹائل ری کیلکولیشنز (style recalculations) کو سست کر دیتے ہیں۔
  1. Duplicate bundle chunks بڑے اور غیر موزوں (unoptimized) بنڈلز ٹرانسفر کے وقت کو ضائع کرتے ہیں۔

اپنی پیشرفت کو کیسے ناپیں:

ان شعبوں کو ٹھیک کرنے سے آپ کے 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