Cloudflare, Mozilla, Facebook සහ Bloomberg වෙතින් ඉංජිනේරුවන්
පරීක්ෂා කිරීම සඳහා
BinaryAST දැනටමත් ඇත
ජාවාස්ක්රිප්ට් සැකසීමේදී, කේතය පැටවීමේ සහ විග්රහ කිරීමේ අදියරේදී සැලකිය යුතු කාලයක් වැය වේ. බොහෝ ජනප්රිය වෙබ් අඩවි වල බාගත කළ JavaScript පරිමාව 10 MB ට ආසන්න බව සලකන විට (උදාහරණයක් ලෙස, LinkedIn සඳහා - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), JavaScript හි මූලික සැකසුම් සැලකිය යුතු ප්රමාදයක් හඳුන්වා දෙයි. කේතය පූරණය වන විට පියාසර කරන විට AST සම්පුර්ණයෙන්ම ගොඩනගා ගැනීමට නොහැකි වීම නිසා බ්රවුසරය පැත්තේ විග්රහ කිරීමේ අදියර ද මන්දගාමී වේ (ශ්රිතවල අවසානය වැනි කේත අවහිර කිරීම් සම්පූර්ණ වන තෙක් බ්රවුසරයට බලා සිටිය යුතුය. වත්මන් මූලද්රව්ය විග්රහ කිරීමට තොරතුරු අතුරුදහන්).
කේත අවම කරන ලද සහ සම්පීඩිත ආකාරයෙන් බෙදා හැරීමෙන් මෙන්ම බ්රව්සරය මගින් ජනනය කරන ලද බයිට් කේතය හැඹිලිගත කිරීමෙන් ඔවුන් ගැටළුව අර්ධ වශයෙන් විසඳීමට උත්සාහ කරයි. නවීන වෙබ් අඩවි වල, කේතය බොහෝ විට යාවත්කාලීන වේ, එබැවින් හැඹිලි කිරීම ගැටළුව විසඳන්නේ අර්ධ වශයෙන් පමණි. WebAssembly විසඳුමක් විය හැක, නමුත් එයට කේතය පැහැදිලිව ටයිප් කිරීම අවශ්ය වන අතර පවතින ජාවාස්ක්රිප්ට් කේතය සැකසීම වේගවත් කිරීම සඳහා එය සුදුසු නොවේ.
තවත් විකල්පයක් වන්නේ JavaScript ස්ක්රිප්ට් වෙනුවට සූදානම් කළ සම්පාදනය කරන ලද බයිට්කේත ලබා දීමයි, නමුත් බ්රව්සර් එන්ජින් සංවර්ධකයින් එයට විරුද්ධ වන්නේ තෙවන පාර්ශවීය බයිට්කේතය සත්යාපනය කිරීමට අපහසු බැවිනි, එහි සෘජු සැකසුම් වෙබ් ස්ථරීකරණයට හේතු විය හැක, අමතර ආරක්ෂක අවදානම් මතු විය හැකිය, සහ සංවර්ධනය විශ්වීය bytecode ආකෘතියක් අවශ්ය වේ.
BinaryAST මඟින් නව බයිට්කේතයක් සෑදීමෙන් හෝ ජාවාස්ක්රිප්ට් භාෂාව වෙනස් නොකර ඔබේ වර්තමාන කේත සංවර්ධනයට සහ බෙදා හැරීමේ ආකෘතියට ගැළපීමට ඉඩ සලසයි. BinaryAST ආකෘතියේ දත්තවල ප්රමාණය සම්පීඩිත minified JavaScript කේතය හා සැසඳිය හැකි අතර මූලාශ්ර පෙළ විග්රහ කිරීමේ අදියර ඉවත් කිරීමෙන් සැකසීමේ වේගය සැලකිය යුතු ලෙස වැඩි වේ. ඊට අමතරව, BinaryAST පූරණය වී ඇති බැවින්, සියලු දත්ත සම්පූර්ණ වන තෙක් බලා නොසිට, සම්පාදනය කිරීමට ආකෘතිය ඉඩ දෙයි. ඊට අමතරව, සේවාදායකයේ පැත්තේ විග්රහ කිරීම මඟින් භාවිතා නොකළ කාර්යයන් සහ අනවශ්ය කේතයන් ආපසු ලබා දුන් BinaryAST නිරූපණයෙන් බැහැර කිරීමට ඉඩ සලසයි, එමඟින් බ්රව්සරය පැත්තේ විග්රහ කිරීමේදී අනවශ්ය ගමනාගමනය විග්රහ කිරීමට සහ සම්ප්රේෂණය කිරීමට කාලය නාස්ති කරයි.
BinaryAST හි ලක්ෂණයක් වන්නේ, කියවිය හැකි JavaScript ප්රතිසාධනය කිරීමේ හැකියාව ද එය මුල් පිටපතට සමාන නොවන නමුත් අර්ථකථනයට සමාන වන අතර විචල්යයන් සහ ශ්රිතවල එකම නම් ඇතුළත් වේ (BinaryAST නම් සුරකින නමුත් ස්ථාන පිළිබඳ තොරතුරු සුරැකෙන්නේ නැත. කේතය, හැඩතල ගැන්වීම සහ අදහස්). කාසියේ අනෙක් පැත්ත නම් නව ප්රහාරක දෛශික මතුවීමයි, නමුත් සංවර්ධකයින්ට අනුව, ඒවා බයිට්කේත බෙදා හැරීම වැනි විකල්ප භාවිතා කරන විට වඩා කුඩා වන අතර පාලනය කළ හැකිය.
JavaScript විග්රහ කිරීම CPU සම්පත් වලින් 10-15% ක් පරිභෝජනය කරන අතර විග්රහ කිරීම JIT සඳහා bytecode සහ ආරම්භක කේත උත්පාදනයට වඩා වැඩි කාලයක් ගත වන බව facebook.com කේතයේ පරීක්ෂණවලින් පෙනී ගියේය. SpiderMonkey එන්ජිම තුළ, AST සම්පූර්ණයෙන්ම සෑදීමට කාලය 500-800 ms ගත වන අතර, BinaryAST භාවිතය මෙම අගය 70-90% කින් අඩු කර ඇත.
සාමාන්යයෙන්, බොහෝ වෙබ් ගිනිකෙළි සඳහා, BinaryAST භාවිතා කරන විට, ප්රශස්තකරණයකින් තොරව ප්රකාරයේදී JavaScript විග්රහ කිරීමේ කාලය 3-10% කින් සහ භාවිතයට නොගත් කාර්යයන් නොසලකා හැරීමේ මාදිලිය සක්රීය කළ විට 90-97% කින් අඩු වේ.
1.2 MB JavaScript පරීක්ෂණ කට්ටලයක් ධාවනය කරන විට, BinaryAST භාවිතයෙන් ආරම්භක කාලය ඩෙස්ක්ටොප් පද්ධතියක (Intel i338) 314 සිට 7 ms දක්වා සහ ජංගම උපාංගයක (HTC One M2019) 1455 සිට 8 ms දක්වා වේගවත් කිරීමට ඉඩ ලබා දේ.
මූලාශ්රය: opennet.ru