ஜாவாஸ்கிரிப்ட் ஏற்றுதலை விரைவுபடுத்த Cloudflare, Mozilla மற்றும் Facebook ஆகியவை BinaryAST ஐ உருவாக்குகின்றன

Cloudflare, Mozilla, Facebook மற்றும் Bloomberg இன் பொறியாளர்கள் வழங்கப்படும் புதிய வடிவம் பைனரிஏஎஸ்டி உலாவியில் தளங்களைத் திறக்கும்போது ஜாவாஸ்கிரிப்ட் குறியீட்டின் டெலிவரி மற்றும் செயலாக்கத்தை விரைவுபடுத்த. BinaryAST பாகுபடுத்தும் கட்டத்தை சர்வர் பக்கத்திற்கு நகர்த்துகிறது மற்றும் ஏற்கனவே உருவாக்கப்பட்ட சுருக்க தொடரியல் மரத்தை வழங்குகிறது (டந்த) BinaryASTஐப் பெற்றவுடன், உலாவியானது JavaScript மூலக் குறியீட்டைப் பாகுபடுத்துவதைத் தவிர்த்து, தொகுக்கும் நிலைக்கு உடனடியாகச் செல்லலாம்.

சோதனைக்காக தயார் MIT உரிமத்தின் கீழ் வழங்கப்பட்ட குறிப்பு செயலாக்கம். Node.js கூறுகள் பாகுபடுத்துவதற்குப் பயன்படுத்தப்படுகின்றன, மேலும் தேர்வுமுறை மற்றும் AST உருவாக்கத்திற்கான குறியீடு ரஸ்டில் எழுதப்பட்டுள்ளது. உலாவி பக்க ஆதரவு
BinaryAST ஏற்கனவே கிடைக்கிறது இரவு கட்டுகிறது பயர்பாக்ஸ். பைனரிஏஎஸ்டியில் உள்ள குறியாக்கியை இறுதி தள கருவி நிலையிலும், ப்ராக்ஸி அல்லது உள்ளடக்க விநியோக நெட்வொர்க்கின் பக்கத்தில் உள்ள வெளிப்புற தளங்களின் பேக்கேஜிங் ஸ்கிரிப்ட்களிலும் பயன்படுத்தலாம். தற்போது, ​​பணிக்குழுவால் BinaryAST தரநிலைப்படுத்தல் செயல்முறை ஏற்கனவே தொடங்கியுள்ளது ECMA TC39, அதன் பிறகு, ஜிஜிப் மற்றும் ப்ரோட்லி போன்ற தற்போதைய உள்ளடக்க சுருக்க முறைகளுடன் இந்த வடிவம் இணைந்து செயல்பட முடியும்.

ஜாவாஸ்கிரிப்ட் ஏற்றுதலை விரைவுபடுத்த Cloudflare, Mozilla மற்றும் Facebook ஆகியவை BinaryAST ஐ உருவாக்குகின்றன

ஜாவாஸ்கிரிப்ட் ஏற்றுதலை விரைவுபடுத்த Cloudflare, Mozilla மற்றும் Facebook ஆகியவை BinaryAST ஐ உருவாக்குகின்றன

ஜாவாஸ்கிரிப்டை செயலாக்கும் போது, ​​குறியீட்டின் ஏற்றுதல் மற்றும் பாகுபடுத்தும் கட்டத்தில் குறிப்பிடத்தக்க அளவு நேரம் செலவிடப்படுகிறது. பல பிரபலமான தளங்களில் பதிவிறக்கம் செய்யப்பட்ட ஜாவாஸ்கிரிப்ட்டின் அளவு 10 எம்பிக்கு அருகில் இருப்பதைக் கருத்தில் கொண்டு (உதாரணமாக, லிங்க்ட்இன் - 7.2 எம்பி, பேஸ்புக் - 7.1 எம்பி, ஜிமெயில் - 3.9 எம்பி), ஜாவாஸ்கிரிப்ட்டின் ஆரம்ப செயலாக்கம் குறிப்பிடத்தக்க தாமதத்தை அறிமுகப்படுத்துகிறது. குறியீடு ஏற்றப்படும்போது, ​​பறக்கும்போது ASTயை முழுமையாக உருவாக்க இயலாமையின் காரணமாக உலாவிப் பக்கத்தில் உள்ள பாகுபடுத்தும் நிலையும் குறைகிறது (செயல்பாடுகளின் முடிவு போன்ற, குறியீடு தொகுதிகள் ஏற்றப்படும் வரை உலாவி காத்திருக்க வேண்டும். தற்போதைய கூறுகளை அலசுவதற்கு தகவல் இல்லை).

குறியீட்டை குறைக்கப்பட்ட மற்றும் சுருக்கப்பட்ட வடிவத்தில் விநியோகிப்பதன் மூலமும், உலாவி மூலம் உருவாக்கப்பட்ட பைட்கோடை தற்காலிக சேமிப்பதன் மூலமும் அவர்கள் சிக்கலை ஓரளவு தீர்க்க முயற்சிக்கின்றனர். நவீன தளங்களில், குறியீடு அடிக்கடி புதுப்பிக்கப்படுகிறது, எனவே தற்காலிக சேமிப்பு சிக்கலை ஓரளவு தீர்க்கிறது. WebAssembly ஒரு தீர்வாக இருக்கலாம், ஆனால் அதற்கு குறியீட்டில் வெளிப்படையான தட்டச்சு தேவைப்படுகிறது மற்றும் ஏற்கனவே உள்ள ஜாவாஸ்கிரிப்ட் குறியீட்டின் செயலாக்கத்தை விரைவுபடுத்த இது மிகவும் பொருத்தமானது அல்ல.

ஜாவாஸ்கிரிப்ட் ஸ்கிரிப்ட்டுகளுக்குப் பதிலாக ஆயத்தமாக தொகுக்கப்பட்ட பைட்கோடை வழங்குவது மற்றொரு விருப்பமாகும், ஆனால் மூன்றாம் தரப்பு பைட்கோடு சரிபார்க்க கடினமாக இருப்பதால் உலாவி என்ஜின் டெவலப்பர்கள் இதற்கு எதிராக உள்ளனர், அதன் நேரடி செயலாக்கம் வலை அடுக்குக்கு வழிவகுக்கும், கூடுதல் பாதுகாப்பு அபாயங்கள் எழலாம் மற்றும் மேம்பாடு உலகளாவிய பைட்கோட் வடிவம் தேவை.

புதிய பைட்கோடை உருவாக்காமலோ அல்லது ஜாவாஸ்கிரிப்ட் மொழியை மாற்றாமலோ உங்கள் தற்போதைய குறியீடு மேம்பாடு மற்றும் டெலிவரி மாடலில் பொருத்துவதற்கு BinaryAST உங்களை அனுமதிக்கிறது. BinaryAST வடிவமைப்பில் உள்ள தரவின் அளவு சுருக்கப்பட்ட minified JavaScript குறியீட்டுடன் ஒப்பிடத்தக்கது, மேலும் மூல உரை பாகுபடுத்தும் கட்டத்தை நீக்குவதன் மூலம் செயலாக்க வேகம் குறிப்பிடத்தக்க அளவில் அதிகரிக்கிறது. கூடுதலாக, அனைத்து தரவும் முடிவடையும் வரை காத்திருக்காமல், பைனரிஏஎஸ்டி ஏற்றப்பட்டதால், தொகுப்பை பைட்கோட் செய்ய வடிவம் அனுமதிக்கிறது. கூடுதலாக, சேவையக பக்கத்தில் பாகுபடுத்துவது, திரும்பிய பைனரிஏஎஸ்டி பிரதிநிதித்துவத்திலிருந்து பயன்படுத்தப்படாத செயல்பாடுகள் மற்றும் தேவையற்ற குறியீட்டை விலக்க அனுமதிக்கிறது, இது உலாவி பக்கத்தில் பாகுபடுத்தும் போது, ​​தேவையற்ற போக்குவரத்தை பாகுபடுத்துதல் மற்றும் கடத்துதல் ஆகிய இரண்டிலும் நேரத்தை வீணடிக்கிறது.

பைனரிஏஎஸ்டியின் ஒரு அம்சம், படிக்கக்கூடிய ஜாவாஸ்கிரிப்டை மீட்டமைக்கும் திறன் ஆகும், இது அசல் பதிப்பைப் போலவே இல்லை, ஆனால் சொற்பொருள் ரீதியாக சமமானது மற்றும் மாறிகள் மற்றும் செயல்பாடுகளின் அதே பெயர்களை உள்ளடக்கியது (பைனரிஏஎஸ்டி பெயர்களைச் சேமிக்கிறது, ஆனால் நிலைகள் பற்றிய தகவல்களைச் சேமிக்காது. குறியீடு, வடிவமைப்பு மற்றும் கருத்துகள்). நாணயத்தின் மறுபக்கம் புதிய தாக்குதல் திசையன்களின் தோற்றம் ஆகும், ஆனால் டெவலப்பர்களின் கூற்றுப்படி, அவை பைட்கோட் விநியோகம் போன்ற மாற்றுகளைப் பயன்படுத்துவதை விட மிகவும் சிறியதாகவும் கட்டுப்படுத்தக்கூடியதாகவும் இருக்கும்.

facebook.com குறியீட்டின் சோதனைகள், ஜாவாஸ்கிரிப்டைப் பாகுபடுத்துவது 10-15% CPU ஆதாரங்களைப் பயன்படுத்துகிறது மற்றும் பாகுபடுத்துதல் JITக்கான பைட்கோட் மற்றும் ஆரம்ப குறியீடு உருவாக்கத்தை விட அதிக நேரம் எடுக்கும். SpiderMonkey இயந்திரத்தில், AST ஐ முழுமையாக உருவாக்க நேரம் 500-800 ms ஆகும், மேலும் BinaryAST இன் பயன்பாடு இந்த எண்ணிக்கையை 70-90% குறைத்துள்ளது.
பொதுவாக, பெரும்பாலான இணைய பட்டாசுகளுக்கு, பைனரிஏஎஸ்டியைப் பயன்படுத்தும் போது, ​​மேம்படுத்தல் இல்லாமல் பயன்முறையில் ஜாவாஸ்கிரிப்ட் பாகுபடுத்தும் நேரம் 3-10% ஆகவும், பயன்படுத்தப்படாத செயல்பாடுகளைப் புறக்கணிக்கும் பயன்முறையை இயக்கும்போது 90-97% ஆகவும் குறைக்கப்படுகிறது.
1.2 MB JavaScript சோதனைத் தொகுப்பை இயக்கும் போது, ​​BinaryASTஐப் பயன்படுத்தி, டெஸ்க்டாப் சிஸ்டத்தில் (Intel i338) 314 முதல் 7 ms வரையிலும், மொபைல் சாதனத்தில் (HTC One M2019) 1455 முதல் 8 ms வரையிலும் தொடக்க நேரத்தை வேகப்படுத்த அனுமதித்தது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்