பேஸ்புக் திறந்த மூல ஹெர்ம்ஸ் ஜாவாஸ்கிரிப்ட் இயந்திரம்

பேஸ்புக் திறந்த மூல இலகுரக ஜாவாஸ்கிரிப்ட் இயந்திரம் ஹெர்ம்ஸ், கட்டமைப்பின் அடிப்படையில் இயங்கும் பயன்பாடுகளுக்கு உகந்ததாக உள்ளது பூர்வீக ரீதியில் பதிலளிக்கவும் ஆண்ட்ராய்டு இயங்குதளத்தில். ஹெர்ம்ஸ் ஆதரவு உள்ளமைக்கப்பட்ட இன்றைய 0.60.2 வெளியீட்டில் தொடங்கி React Native இல். நேட்டிவ் ஜாவாஸ்கிரிப்ட் பயன்பாடுகள் மற்றும் குறிப்பிடத்தக்க வள நுகர்வுக்கான நீண்ட தொடக்க நேரங்களின் சிக்கல்களைத் தீர்க்கும் வகையில் இந்தத் திட்டம் வடிவமைக்கப்பட்டுள்ளது. குறியீடு எழுதியது C++ இல் மற்றும் MIT உரிமத்தின் கீழ் விநியோகிக்கப்படுகிறது.

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

பயன்பாட்டை நேரடியாகச் செயல்படுத்த, திட்டத்தில் உருவாக்கப்பட்ட ஒரு மெய்நிகர் இயந்திரம் SemiSpace குப்பை சேகரிப்பாளருடன் பயன்படுத்தப்படுகிறது, இது தேவைக்கேற்ப (ஆன்-டிமாண்ட்) தொகுதிகளை விநியோகிக்கும், தொகுதிகளை நகர்த்துவதற்கும் defragmentation செய்வதற்கும் ஆதரவளிக்கிறது. முழு குவியலின் உள்ளடக்கங்களை ஸ்கேன் செய்கிறது.

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

இயந்திரத்தில் உதவியவா் ECMAScript 2015 JavaScript தரநிலையின் ஒரு பகுதி (இறுதி இலக்கு அதை முழுமையாக ஆதரிப்பதாகும்) மேலும் தற்போதுள்ள பெரும்பாலான ரியாக்ட் நேட்டிவ் பயன்பாடுகளுடன் இணக்கத்தன்மையை வழங்குகிறது. அறிக்கைகள், பிரதிபலிப்பு (பிரதிபலிப்பு மற்றும் ப்ராக்ஸி), Intl API மற்றும் RegExp இல் சில கொடிகளுடன் eval() இன் உள்ளூர் செயலாக்கத்தை ஆதரிக்க வேண்டாம் என்று ஹெர்ம்ஸ் முடிவு செய்துள்ளார். ரியாக்ட் நேட்டிவ் பயன்பாட்டில் ஹெர்ம்ஸை இயக்க, திட்டத்தில் "enableHermes: true" விருப்பத்தைச் சேர்க்கவும். CLI பயன்முறையில் ஹெர்ம்ஸை உருவாக்குவதும் சாத்தியமாகும், இது கட்டளை வரியிலிருந்து தன்னிச்சையான ஜாவாஸ்கிரிப்ட் கோப்புகளை இயக்க அனுமதிக்கிறது. பிழைத்திருத்தத்திற்கு ஒரு சோம்பேறி தொகுத்தல் பயன்முறை உள்ளது, இது ஒவ்வொரு முறையும் ஜாவாஸ்கிரிப்டைத் தொகுக்காமல், டெவலப்மென்ட் செயல்பாட்டின் போது, ​​ஏற்கனவே சாதனத்தில் பைட்கோடை உருவாக்க அனுமதிக்கிறது.

அதே நேரத்தில், Facebook ஆனது Node.js மற்றும் பிற தீர்வுகளுக்கு ஹெர்ம்ஸை மாற்றியமைக்கத் திட்டமிடவில்லை, மொபைல் பயன்பாடுகளில் மட்டுமே கவனம் செலுத்துகிறது (மட்டுப்படுத்தப்பட்ட ரேம் மற்றும் மெதுவான ஃப்ளாஷ் கொண்ட மொபைல் அமைப்புகளின் சூழலில் JITக்குப் பதிலாக AOT தொகுப்பு மிகவும் உகந்ததாகும்). மைக்ரோசாஃப்ட் ஊழியர்களால் நடத்தப்படும் ஆரம்ப செயல்திறன் சோதனை வெளிப்படுத்தினார்ஹெர்ம்ஸைப் பயன்படுத்தும் போது, ​​Android க்கான Microsoft Office பயன்பாடு 1.1 வினாடிகளில் பயன்படுத்தக் கிடைக்கும். தொடக்கத்திற்குப் பிறகு மற்றும் 21.5MB ரேம் பயன்படுத்துகிறது, அதே நேரத்தில் V8 இன்ஜினைப் பயன்படுத்தும் போது தொடங்குவதற்கு 1.4 வினாடிகள் ஆகும் மற்றும் நினைவக நுகர்வு 30MB ஆகும்.

கூடுதலாக: பேஸ்புக் வெளியிடப்பட்ட சொந்த சோதனை முடிவுகள். MatterMost பயன்பாட்டுடன் ஹெர்ம்ஸைப் பயன்படுத்தும் போது, ​​வேலைக்கான நேரம் (TTI, தொடர்பு கொள்ள நேரம்) 4.30 முதல் 2.01 வினாடிகள் வரை குறைந்தது, APK தொகுப்பின் அளவு 41 இலிருந்து 22 MB ஆகவும், நினைவக நுகர்வு 185 இலிருந்து 136 ஆகவும் குறைக்கப்பட்டது. எம்பி

ஆதாரம்: opennet.ru

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