7 దాగి ఉన్న JavaScript పనితీరు అడ్డంకులు (Bottlenecks) మరియు వాటిని ఎలా పరిష్కరించాలి

నెమ్మదైన వెబ్ యాప్‌లు అరుదుగా తప్పుడు అల్గారిథమ్స్ వల్ల విఫలమవుతాయి. మీ కోడ్ బ్రౌజర్‌తో ఎలా సంభాషిస్తుంది అనే దాని వల్ల అవి విఫలమవుతాయి.

నేను 300 ప్రొడక్షన్ అప్లికేషన్‌లను విశ్లేషించాను (profiled). పనితీరు సమస్యలలో 73% ఈ 7 వనరుల నుండి వస్తాయి.

  1. Layout thrashing మీరు ఒక ప్రాపర్టీని చదివి (read), DOMకి ఏదైనా రాసి (write), మళ్ళీ చదివినప్పుడు ఇది జరుగుతుంది. దీనివల్ల బ్రౌజర్ పదేపదే లేఅవుట్‌ను తిరిగి లెక్కించాల్సి వస్తుంది (recalculate layout).
  1. Unbounded event listeners ఒక ఈవెంట్ లిజనర్‌ను తీసివేయకుండా (remove చేయకుండా) జోడించడం వల్ల మెమరీ లీక్‌లు (memory leaks) ఏర్పడతాయి. సింగిల్-పేజీ యాప్స్‌లో (single-page apps) ఇది ఒక ప్రధాన సమస్య.
  1. Synchronous DOM reads in loops లూప్ లోపల offsetWidth లేదా getBoundingClientRectని చదవడం వల్ల నిరంతరం రిఫ్లోస్ (reflows) జరుగుతాయి.
  1. Missing requestAnimationFrame batching స్క్రోల్ లేదా రీసైజ్ ఈవెంట్‌ల సమయంలో నేరుగా DOM మార్పులు చేయడం వల్ల అవి చాలా తరచుగా జరుగుతాయి. దీనివల్ల జాంక్ (jank) ఏర్పడుతుంది.
  1. Large JSON.parse payloads పెద్ద ఫైల్‌లను పార్స్ చేయడం వల్ల మెయిన్ థ్రెడ్ (main thread) బ్లాక్ అవుతుంది. దీనివల్ల ఇన్‌పుట్ లాగ్ (input lag) ఏర్పడుతుంది.
  1. Complex CSS selector matching లోతుగా ఉన్న (deeply nested) లేదా సంక్లిష్టమైన సెలెక్టర్లు స్టైల్ రీకాల్క్యులేషన్లను (style recalculations) నెమ్మదింపజేస్తాయి.
  1. 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