Ahead-of-time compilation
கணினி அறிவியலில், நேரத்திற்கு முந்தைய தொகுப்பு (ஏ. ஓ. டி தொகுப்பு) என்பது ஒரு நிரலைச் செயல்படுத்துவதற்கு முன்பு (பெரும்பாலும்) உயர்-நிலை நிரலாக்க மொழியை (பெரும்பாலும்) கீழ்-நிலை மொழியாகத் தொகுக்கும் செயலாகும். பெரும்பாலும், இது சி அல்லது சி + + போன்ற உயர் நிலை நிரலாக்க மொழியை தொகுக்கும் செயலுடன் தொடர்புடையது, அல்லது ஜாவா பைட்ட்கோட் அல்லது. நெட் ஃபிரேம்வொர்க் காமன் இன்டர்மீடியட் லாங்குவேஜ் (சிஐஎல்) குறியீடு போன்ற இடைநிலை பிரதிநிதித்துவம், ஒரு சொந்த (கணினி சார்ந்த) இயந்திரக் குறியீடாக, இதன் விளைவாக பைனரி கோப்பு ஒரு நிலையான சொந்த தொகுப்பாளரைப் போலவே சொந்தமாக செயல்படுத்த முடியும். இந்த குறிப்பிட்ட சூழலில் பயன்படுத்தப்படும்போது, இது பெரும்பாலும் ஜஸ்ட்-இன்-டைம் (ஜேஐடி) தொகுப்புக்கு நேர்மாறாக பார்க்கப்படுகிறது. மேலும் பொதுவாகப் பேசுகையில், ஒரு ஏஓடி தொகுப்பின் இலக்கு மொழிகள் சொந்த இயந்திரக் குறியீட்டிற்கு குறிப்பிட்டதாக இருக்க வேண்டிய அவசியமில்லை, ஆனால் அவை தன்னிச்சையாக வரையறுக்கப்படுகின்றன. சில கல்விக் கட்டுரைகள் இந்த வார்த்தையை ஜாவா பைட் குறியீட்டை சி உடன் தொகுக்கும் செயல் அல்லது உகப்பாக்கம் குழாய் செய்யப்படும் நேரத்தைக் குறிக்கப் பயன்படுத்துகின்றன. ஒரு கல்வி திட்டம் இந்த வார்த்தையை வி8 (ஜாவாஸ்கிரிப்ட் இயந்திரம்) க்கான இயந்திர-சார்ந்த உகந்த ஐஆர் மற்றும் ஜாவாஸ்கிரிப்ட்கோர் இயந்திர சுயாதீன பைட் குறியீட்டிற்கு ஜாவாஸ்கிரிப்டை முன்கூட்டியே தொகுக்கும் செயலைக் குறிக்கப் பயன்படுத்துகிறது. சில தொழில்துறை மொழி அமலாக்கங்கள் (எ. கா. க்ளோஜூர் மற்றும் ஹெர்ம்ஸ் ஜாவாஸ்கிரிப்ட் இயந்திரம்) இந்த வார்த்தையை மூல மொழியை விஎம் குறிப்பிட்ட பைட்ட்கோடுக்கு முன்கூட்டியே தொகுக்கும் செயலைக் குறிக்கப் பயன்படுத்துகின்றன. கோண (வலை கட்டமைப்பு) இந்த வார்த்தையை அதன் எச். டி. எம். எல் வார்ப்புரு மற்றும் தட்டச்சு ஸ்கிரிப்டை ஜாவாஸ்கிரிப்டாக மாற்றுவதைக் குறிக்கப் பயன்படுத்துகிறது. உண்மையில், அனைத்து நிலையான தொகுப்பும் தொழில்நுட்ப ரீதியாக நேரத்திற்கு முன்பே செய்யப்படுவதால், இந்த குறிப்பிட்ட சொற்கள் பெரும்பாலும் அத்தகைய முன் தொகுப்பின் செயலை விட ஒருவித செயல்திறன் நன்மைகளை வலியுறுத்த பயன்படுத்தப்படுகின்றன. ஜாவாவை ஜாவா பைட் குறியீட்டிற்கு தொகுக்கும் செயல் அரிதாகவே ஏஓடி என்று குறிப்பிடப்படுகிறது, ஏனெனில் இது பொதுவாக ஒரு தேவை, உகப்பாக்கம் அல்ல. குறைந்த ரன்டைம் ஓவர்ஹெட் நிர்வகிக்கப்பட்ட குறியீடு ரன்டைம் கொண்ட சில நிரலாக்க மொழிகள் ஒரு இடைநிலை பிரதிநிதித்துவத்திற்கு தொகுக்கப்படக்கூடிய ஜஸ்ட்-இன்-டைம் (ஜேஐடி) தொகுப்பைப் பயன்படுத்துகின்றன. இது சுருக்கமாக இடைநிலை குறியீட்டை ஒரு சொந்த ஓட்டத்திற்கான இயந்திர குறியீடாக தொகுக்கிறது, அதே நேரத்தில் இடைநிலை குறியீடு செயல்படுத்தப்படுகிறது, இது ஒரு பயன்பாட்டின் செயல்திறனை மெதுவாக்கக்கூடும். முன்கூட்டியே தொகுப்பது இந்த படிநிலையின் தேவையை நீக்குகிறது, இது செயல்படுத்தும் போது அல்லாமல் செயல்படுத்தப்படுவதற்கு முன்பு நிகழ்கிறது. உள்ளூர் இயந்திரக் குறியீடு அல்லது பிற நிலையான விஎம் பைட் குறியீட்டிற்கு மாறும் வகையில் தட்டச்சு செய்யப்பட்ட மொழிகளுக்கு முன்கூட்டியே தொகுப்பது ஒரு குறிப்பிட்ட எண்ணிக்கையிலான சந்தர்ப்பங்களில் மட்டுமே சாத்தியமாகும். எடுத்துக்காட்டாக, மேம்பட்ட நிலையான வகை புனரமைப்பு நுட்பங்கள் மற்றும் வகை ஊகங்கள் காரணமாக எர்லாங் மொழிக்கான உயர் செயல்திறன் எர்லாங் திட்டம் (ஹைபிஇ) ஏஓடி தொகுப்பாளர் இதைச் செய்ய முடியும். முழுமையாக AOT தொகுக்கப்பட்ட நிரல்கள் மற்றும் நூலகங்களுடன் பெரும்பாலான சூழ்நிலைகளில், இயக்க நேர சூழலின் ஒரு பகுதியை அகற்ற முடியும், இதனால் வட்டு இடம், நினைவகம், பேட்டரி ஆயுள் மற்றும் தொடக்க நேரங்கள் (JIT வார்மப் கட்டம் இல்லை) போன்றவற்றை சேமிக்க முடியும். இதன் காரணமாக, உட்பொதிக்கப்பட்ட அல்லது மொபைல் சாதனங்களில் இது பயனுள்ளதாக இருக்கும். செயல்திறன் பரிமாற்றங்கள் AOT தொகுப்பான்கள் சிக்கலான மற்றும் மேம்பட்ட குறியீடு தேர்வுகளைச் செய்ய முடியும், இது பெரும்பாலான சந்தர்ப்பங்களில் JITing இன் மிகவும் விலையுயர்ந்ததாகக் கருதப்படும். இதற்கு மாறாக, ஏ. ஓ. டி பொதுவாக ரன்டைம் சுயவிவரம்-வழிகாட்டப்பட்ட உகப்பாக்கம் (பி. ஜி. ஓ), போலி-நிலையான பரப்புதல் அல்லது மறைமுக-மெய்நிகர் செயல்பாடு இன்லைனிங் போன்ற ஜே. ஐ. டி. யில் சாத்தியமான சில தேர்வுகளைச் செய்ய முடியாது. AOT ஒரு இலக்கு கட்டமைப்பிற்கு தொகுக்க வேண்டும், அதே நேரத்தில் ஒரு JIT குறியீட்டை தொகுத்து அது இயங்கும் உண்மையான CPU ஐ சிறந்த முறையில் பயன்படுத்த முடியும், மென்பொருள் வெளியிடப்பட்ட பல ஆண்டுகளுக்குப் பிறகும் கூட. மேலும், ஜேஐடி தொகுப்பாளர்கள் குறியீட்டில் அனுமானங்களைச் செய்வதன் மூலம் சூடான குறியீட்டை ஊகிக்கக்கூடிய வகையில் மேம்படுத்தலாம். ஒரு ஊக அனுமானம் பின்னர் தவறானது என்று நிரூபிக்கப்பட்டால் உருவாக்கப்பட்ட குறியீட்டை நீக்க முடியும். தகவமைப்பு உகப்பாக்கம் மூலம் குறியீடு மீண்டும் உகந்ததாக இருக்கும் வரை இத்தகைய செயல்பாடு இயங்கும் மென்பொருளின் செயல்திறனை குறைக்கிறது. ஒரு ஏ. ஓ. டி தொகுப்பாளரால் அத்தகைய அனுமானங்களைச் செய்ய முடியாது, மேலும் தொகுக்கும் நேரத்தில் முடிந்தவரை அதிகமான தகவல்களை ஊகிக்க வேண்டும். இது குறைவான சிறப்பு குறியீட்டை நாட வேண்டும், ஏனெனில் ஒரு முறையின் மூலம் எந்த வகைகள் செல்லும் என்பதை அது அறிய முடியாது. சுயவிவர வழிகாட்டப்பட்ட உகப்பாக்கங்கள் மூலம் இத்தகைய சிக்கல்களைத் தணிக்க முடியும். ஆனால் இந்த விஷயத்தில் கூட, உருவாக்கப்பட்ட குறியீட்டை ஒரு ஜேஐடி கம்பைலர் செய்வது போல மாறிவரும் இயக்க நேர சுயவிவரத்திற்கு மாறும் வகையில் மாற்றியமைக்க முடியாது. சேமிப்பக பரிமாற்றங்களையும் பார்க்கவும் asm.js தொகுப்பாளர் (ஜாவாஸ்கிரிப்ட்) பார்டோக் (CIL) எக்ஸெல்சியர் JET (ஜாவா) குனு கம்பைலர் ஃபார் ஜாவா ஐஎல்2சிபியு (CIL) நேட்டிவ் இமேஜ் ஜெனரேட்டர் (CIL) ரூபி மோஷன் (ரூபி) குறிப்புகள் வெளிப்புற இணைப்புகள் வேகம்ஃ என்ஜென் உங்கள் செயல்திறனை சக்திவாய்ந்த புதிய அம்சங்களுடன் மேம்படுத்துகிறது-எம்எஸ்டிஎன் இதழ், ஏப்ரல் 2005 மோனோ ஏஓடி எக்ஸெல்சியர் ஜெட்-ஜாவாவிற்கான ஏஓடி கம்பைலர் குனு கம்பைலருடன் சான்றளிக்கப்பட்ட ஜாவா எஸ்இ செயல்படுத்தல் asm.js ரியல் டைம் ஜாவாவின் ஏஓடி தொகுப்பு, பகுதி 2: தொகுப்பு நுட்பங்களை ஒப்பிடுதல்-ஐபிஎம் டெவலப்பர் ஒர்க்ஸ், ஏப்ரல் 2007 மேம்பட்ட ஸ்விங் செயல்திறன்ஃ ஜேஐடி வெர்சஸ் ஏஓடி தொகுப்பு-லினக்ஸ்