நகல் மற்றும் பேட்ச் நுட்பத்தைப் பயன்படுத்தும் பைத்தானுக்கு ஒரு கம்பைலரை அவர்கள் முன்மொழிகின்றனர்

பைதான் லோகோ

பைதான் ஒரு உயர்நிலை நிரலாக்க மொழி.

சமீபத்தில் முக்கிய ஒன்று CPython டெவலப்பர்கள் ஒரு புதிய JIT தொகுப்பியை வெளியிட்டனர் பைத்தானுக்கு நகல் மற்றும் பேட்ச் நுட்பத்தைப் பயன்படுத்தி, எது சமீபத்திய மற்றும் புதுமையான தொகுப்பு நுட்பம் என்று அதன் வேகம், பராமரிப்பின் எளிமை ஆகியவற்றிற்காக தனித்து நிற்கிறது மற்றும் ஏற்கனவே உள்ள மொழிபெயர்ப்பாளருடன் அதன் முழுமையான ஒருங்கிணைப்பு.

நகலெடுத்து ஒட்டவும் முன் வரையறுக்கப்பட்ட நூலகத்தின் பயன்பாட்டை அடிப்படையாகக் கொண்டது என அறியப்படும் பைனரி குறியீடு துண்டுகள் மேம்படுத்தப்பட்ட இயந்திரக் குறியீட்டை வெளியிட "வார்ப்புருக்கள்". இந்த டெம்ப்ளேட்டுகள் AST (Abstract Syntax Tree) முனைகள் அல்லது பைட் ஆப்கோட்களின் முன்-கட்டமைக்கப்பட்ட செயலாக்கங்களாகும், அவை உடனடி எழுத்துக்கள், ஸ்டேக் மாறி ஆஃப்செட்டுகள் மற்றும் கிளை மற்றும் அழைப்பு இலக்குகள் போன்ற விடுபட்ட மதிப்புகளைக் கொண்டிருக்கின்றன.

இது C++ இல் பைனரி வார்ப்புருக்களின் மாறுபாடுகளை ஒரு சுத்தமான மற்றும் தூய்மையான முறையில் முறையாக உருவாக்க உங்களை அனுமதிக்கிறது. Clang+LLVM கம்பைலர் உள்கட்டமைப்பைப் பயன்படுத்துகிறது குறிப்பிட்ட இயங்குதள விவரங்களை குறைந்த அளவில் மறைக்க.

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

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

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

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

நகல் மற்றும் பேட்ச் நுட்பத்துடன் ஒரு JIT செயல்படுத்தல் ELF வடிவத்தில் ஒரு பொருள் கோப்பை தொகுப்பதை உள்ளடக்கியது அல்லதுLLVM ஐப் பயன்படுத்துகிறது. இந்த ஆட்சேபிக்கப்பட்ட கோப்பில் பைட்கோட் வழிமுறைகள் பற்றிய தகவல்கள் மற்றும் தேவையான தரவு மாற்றீடு பற்றிய விவரங்கள் உள்ளன. செயல்பாட்டின் போது, ​​JIT ஆனது மொழிபெயர்ப்பாளரால் உருவாக்கப்பட்ட பைட்கோட் வழிமுறைகளை இயந்திர குறியீடு பிரதிநிதித்துவங்களுடன் மாற்றுகிறது, அதே நேரத்தில் கணக்கீடுகளுக்குத் தேவையான தரவை சரிசெய்கிறது. தொகுப்பின் போது JIT செயலாக்கத்திற்கு LLVM ஒரு சார்புநிலையாக தேவைப்பட்டாலும், இயக்க நேர கூறுகள் வெளிப்புற சார்புகளுடன் பிணைக்கப்படவில்லை, இது கையால் எழுதப்பட்ட C குறியீட்டின் 300 வரிகள் மற்றும் உருவாக்கப்பட்ட C குறியீட்டின் 3000 வரிகளைக் குறைக்கிறது.

செயல்திறனைப் பொறுத்தவரை, நகல் மற்றும் பேட்ச் நுட்பத்துடன் முன்மொழியப்பட்ட JIT குறிப்பிடத்தக்க முன்னேற்றங்களை அளிக்கிறது பாரம்பரிய அணுகுமுறைகளுடன் ஒப்பிடும்போது. வழக்கமான JITகளுடன் (LLVM -O0) முரண்படும்போது, ​​100 மடங்கு வேகமான குறியீடு உருவாக்கம் மற்றும் அதன் விளைவாக வரும் குறியீடு இது 15% அதிக செயல்திறன் கொண்டது. WebAssembly தொகுப்பின் (லிஃப்டாஃப்) பகுதியில், புதிய JIT 5x வேகமான குறியீடு உருவாக்கத்தை நிரூபிக்கிறது, இதன் விளைவாக வரும் குறியீடு 50% வேகமாக இயங்கும்.

கைமுறையாக எழுதப்பட்ட அசெம்பிளி குறியீட்டைப் பயன்படுத்தும் LuaJIT போன்ற தேர்வுமுறை JIT உடன் ஒப்பிடும்போது, ​​முன்மொழியப்பட்ட JIT 13 சோதனைகளில் 44 இல் சிறப்பாகச் செயல்பட்டது. சராசரியாக இது செயல்திறனில் 35% பின்தங்கியிருந்தாலும், பராமரிப்பில் குறிப்பிடத்தக்க எளிமைப்படுத்தல் மற்றும் செயல்படுத்தல் சிக்கலைக் குறைப்பதன் மூலம் இந்த வேறுபாடு ஈடுசெய்யப்படுகிறது என்பதை முன்னிலைப்படுத்துவது அவசியம். குறியீடு நிர்வாகத்தில் செயல்திறன் மற்றும் செயல்திறன் ஆகியவற்றுக்கு இடையேயான இந்த சமநிலை, செயல்திறன் நிலப்பரப்பில் ஒரு கவர்ச்சிகரமான மாற்றாக முன்மொழியப்பட்ட JIT ஐ நிலைநிறுத்துகிறது.

இறுதி வீரர்கள்மேலும் அதைப் பற்றி மேலும் அறிய நீங்கள் ஆர்வமாக இருந்தால், நீங்கள் விவரங்களை சரிபார்க்கலாம் பின்வரும் இணைப்பில்.


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.