𝟩 மறைமுகமான JavaScript Bottlenecks மற்றும் அவற்றைச் சரிசெய்வது எப்படி

மெதுவான இணையப் பயன்பாடுகள் (web apps) அரிதாகவே மோசமான அல்காரிதம்களால் (algorithms) தோல்வியடைகின்றன. உங்கள் குறியீடு (code) உலாவியுடன் (browser) எவ்வாறு தொடர்பு கொள்கிறது என்பதாலேயே அவை தோல்வியடைகின்றன.

நான் 300 தயாரிப்புப் பயன்பாடுகளை (production applications) ஆய்வு செய்தேன். செயல்திறன் சிக்கல்களில் 73% இந்த 7 காரணிகளிலிருந்து வருகின்றன.

  1. Layout thrashing நீங்கள் ஒரு பண்பை (property) படித்துவிட்டு, DOM-இல் எழுதும்போது, மீண்டும் ஒருமுறைப் படித்தால் இது நிகழும். இது உலாவியைத் தொடர்ச்சியாக layout-ஐ மறு கணக்கிட (recalculate) கட்டாயப்படுத்துகிறது.
  1. Unbounded event listeners ஒரு event listener-ஐ நீக்காமல் சேர்த்தால் அது memory leaks-ஐ உருவாக்கும். இது single-page apps-களில் ஒரு முக்கியப் பிரச்சனையாகும்.
  1. லூப்களில் (loops) Synchronous DOM படிவுகள் ஒரு லூப்பிற்குள் offsetWidth அல்லது getBoundingClientRect-ஐப் படிப்பது தொடர்ச்சியான reflows-களைத் தூண்டும்.
  1. requestAnimationFrame batching இல்லாமை scroll அல்லது resize நிகழ்வுகளின் போது நேரடியாக DOM-இல் மாற்றங்களைச் செய்வது அடிக்கடி நிகழ்கிறது. இது jank-ஐ (திரை தட்டுத்தட்டுதல்) ஏற்படுத்தும்.
  1. பெரிய JSON.parse payloads பெரிய கோப்புகளைப் பகுப்பாய்வு செய்வது (parsing) main thread-ஐத் தடுக்கும். இது input lag-ஐ ஏற்படுத்தும்.
  1. சிக்கலான CSS selector matching ஆழமாகத் தொகுக்கப்பட்ட அல்லது சிக்கலான selectors, style மறு கணக்கீடுகளைத் தாமதப்படுத்தும்.
  1. நகல் (Duplicate) bundle chunks பெரிய மற்றும் மேம்படுத்தப்படாத (unoptimized) bundles தரவுப் பரிமாற்ற நேரத்தை வீணடிக்கும்.

உங்கள் முன்னேற்றத்தை அளவிடுவது எப்படி:

இந்தத் துறைகளைச் சரிசெய்வது உங்கள் 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