Ahead-of-time compilation
કોમ્પ્યુટર વિજ્ઞાનમાં, ફોર-ઓફ-ટાઇમ સંકલન (એઓટી સંકલન) એ પ્રોગ્રામના અમલીકરણ પહેલાં (ઘણીવાર) ઉચ્ચ-સ્તરની પ્રોગ્રામિંગ ભાષાને (ઘણીવાર) નીચલા-સ્તરની ભાષામાં સંકલન કરવાની ક્રિયા છે, સામાન્ય રીતે બિલ્ડ-ટાઇમ પર, રન ટાઇમ પર કરવા માટે જરૂરી કામની માત્રાને ઘટાડવા માટે. મોટેભાગે, તે C અથવા C + + જેવી ઉચ્ચ-સ્તરની પ્રોગ્રામિંગ ભાષા અથવા જાવા બાઈટકોડ અથવા. NET ફ્રેમવર્ક કોમન ઇન્ટરમીડિયેટ લેંગ્વેજ (CIL) કોડ જેવી મધ્યવર્તી રજૂઆતને મૂળ (સિસ્ટમ-આધારિત) મશીન કોડમાં સંકલિત કરવાની ક્રિયા સાથે સંકળાયેલ છે, જેથી પરિણામી દ્વિસંગી ફાઇલ પ્રમાણભૂત મૂળ કમ્પાઇલરની જેમ મૂળ રૂપે ચલાવી શકાય. જ્યારે આ ચોક્કસ સંદર્ભમાં તેનો ઉપયોગ કરવામાં આવે છે, ત્યારે તેને ઘણીવાર જસ્ટ-ઇન-ટાઇમ (જે. આઈ. ટી.) સંકલનની વિરુદ્ધ તરીકે જોવામાં આવે છે. વધુ સામાન્ય રીતે કહીએ તો, એઓટી સંકલનની લક્ષિત ભાષાઓ મૂળ મશીન કોડ માટે ચોક્કસ હોય તે જરૂરી નથી પરંતુ તેને મનસ્વી રીતે વ્યાખ્યાયિત કરવામાં આવે છે. કેટલાક શૈક્ષણિક કાગળો આ શબ્દનો ઉપયોગ જાવા બાઈટકોડને સીમાં સંકલિત કરવાની ક્રિયા અથવા ઓપ્ટિમાઇઝેશન પાઇપલાઇન ક્યારે કરવામાં આવે છે તે સમય માટે કરે છે. એક શૈક્ષણિક પ્રોજેક્ટ આ શબ્દનો ઉપયોગ V8 (જાવાસ્ક્રિપ્ટ એન્જિન) માટે મશીન-આધારિત ઓપ્ટિમાઇઝ્ડ IR અને જાવાસ્ક્રિપ્ટકોર માટે મશીન સ્વતંત્ર બાઇટકોડ માટે જાવાસ્ક્રિપ્ટને પૂર્વ-સંકલન કરવાની ક્રિયાના અર્થમાં કરે છે. કેટલાક ઔદ્યોગિક ભાષાના અમલીકરણ (દા. ત. ક્લોઝર અને હર્મેસ જાવાસ્ક્રિપ્ટ એન્જિન) આ શબ્દનો ઉપયોગ સ્રોત ભાષાને વી. એમ. વિશિષ્ટ બાઈટકોડમાં પૂર્વ-સંકલિત કરવાની ક્રિયા માટે કરે છે. કોણીય (વેબ માળખું) આ શબ્દનો ઉપયોગ તેના એચટીએમએલ નમૂના અને ટાઇપસ્ક્રિપ્ટને જાવાસ્ક્રિપ્ટમાં રૂપાંતરિત કરવા માટે કરે છે. હકીકતમાં, તમામ સ્થિર સંકલન તકનીકી રીતે સમય પહેલા કરવામાં આવે છે, તેથી આ ચોક્કસ શબ્દરચનાનો ઉપયોગ ઘણીવાર આવા પૂર્વ-સંકલનના કાર્ય પર અમુક પ્રકારના પ્રદર્શન લાભો પર ભાર મૂકવા માટે થાય છે. જાવાને જાવા બાઈટકોડમાં સંકલિત કરવાની ક્રિયાને તેથી ભાગ્યે જ એઓટી તરીકે ઓળખવામાં આવે છે કારણ કે તે સામાન્ય રીતે જરૂરિયાત હોય છે, ઓપ્ટિમાઇઝેશન નહીં. નિયંત્રિત કોડ રનટાઇમ સાથેની કેટલીક પ્રોગ્રામિંગ ભાષાઓ કે જે મધ્યવર્તી રજૂઆતમાં સંકલિત કરી શકાય છે તે જસ્ટ-ઇન-ટાઇમ (જેઆઇટી) સંકલનનો ઉપયોગ કરે છે. આ ટૂંકમાં મધ્યવર્તી કોડને મૂળ રન માટે મશીન કોડમાં સંકલિત કરે છે જ્યારે મધ્યવર્તી કોડ ચલાવવામાં આવે છે જે એપ્લિકેશનના પ્રદર્શનને ધીમું કરી શકે છે. અગાઉથી સંકલન કરવાથી અમલ દરમિયાન નહીં પણ અમલ પહેલાં આ પગલાની જરૂરિયાત દૂર થાય છે. ગતિશીલ રીતે ટાઇપ કરેલી ભાષાઓને મૂળ મશીન કોડ અથવા અન્ય સ્થિર વી. એમ. બાઈટકોડમાં અગાઉથી સંકલન કરવું મર્યાદિત સંખ્યામાં જ શક્ય છે. ઉદાહરણ તરીકે, એરલાંગ ભાષા માટે હાઇ પરફોર્મન્સ એરલાંગ પ્રોજેક્ટ (હાયપીઇ) એઓટી કમ્પાઇલર અદ્યતન સ્થિર પ્રકારની પુનર્નિર્માણ તકનીકો અને પ્રકારની અટકળોને કારણે આ કરી શકે છે. મોટાભાગની પરિસ્થિતિઓમાં સંપૂર્ણ AOT સંકલિત કાર્યક્રમો અને પુસ્તકાલયો સાથે, રનટાઇમ વાતાવરણના ભાગને દૂર કરવું શક્ય છે, આમ ડિસ્કની જગ્યા, મેમરી, બેટરી જીવન અને સ્ટાર્ટઅપ સમય (કોઈ JIT વોર્મઅપ તબક્કો નહીં) વગેરેની બચત થાય છે. આ કારણે, તે એમ્બેડેડ અથવા મોબાઇલ ઉપકરણોમાં ઉપયોગી થઈ શકે છે. પરફોર્મન્સ ટ્રેડ-ઓફ્સ એઓટી કમ્પાઇલર્સ જટિલ અને અદ્યતન કોડ ઓપ્ટિમાઇઝેશન કરી શકે છે જે મોટાભાગના કિસ્સાઓમાં જેઆઈટીંગને ખૂબ ખર્ચાળ ગણવામાં આવશે. તેનાથી વિપરીત, એ. ઓ. ટી. સામાન્ય રીતે જે. આઈ. ટી. માં રનટાઇમ પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશન (પી. જી. ઓ.), સ્યુડો-કોન્સ્ટન્ટ પ્રોપાગેશન અથવા પરોક્ષ-વર્ચ્યુઅલ ફંક્શન ઇનલાઇનિંગ જેવા શક્ય કેટલાક ઓપ્ટિમાઇઝેશન કરી શકતું નથી. એ. ઓ. ટી. એ લક્ષ્ય માળખામાં સંકલન કરવું આવશ્યક છે, જ્યારે જે. આઈ. ટી. સોફ્ટવેર બહાર પાડ્યાના વર્ષો પછી પણ, તેના પર ચાલી રહેલા વાસ્તવિક સીપીયુનો શ્રેષ્ઠ ઉપયોગ કરવા માટે કોડ સંકલન કરી શકે છે. વધુમાં, જે. આઈ. ટી. કમ્પાઇલર્સ કોડ પર ધારણાઓ કરીને અનુમાનિત રીતે હોટ કોડને શ્રેષ્ઠ બનાવી શકે છે. જો કોઈ અનુમાનિત ધારણા પાછળથી ખોટી સાબિત થાય તો જનરેટેડ કોડને ડીઓપ્ટિમાઇઝ કરી શકાય છે. અનુકૂલનશીલ ઓપ્ટિમાઇઝેશન દ્વારા કોડ ફરીથી ઓપ્ટિમાઇઝ ન થાય ત્યાં સુધી આવી કામગીરી ચાલી રહેલા સોફ્ટવેરની કામગીરીને ધીમું કરે છે. એઓટી કમ્પાઇલર આવી ધારણાઓ કરી શકતું નથી અને સંકલન સમયે શક્ય તેટલી વધુ માહિતીનું અનુમાન લગાવવાની જરૂર છે. તેને ઓછા વિશિષ્ટ કોડનો આશરો લેવાની જરૂર છે કારણ કે તે જાણી શકતું નથી કે કયા પ્રકારો પદ્ધતિમાંથી પસાર થશે. આવી સમસ્યાઓને પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશન દ્વારા દૂર કરી શકાય છે. પરંતુ આ કિસ્સામાં પણ, જનરેટેડ કોડને જે. આઈ. ટી. કમ્પાઇલરની જેમ બદલાતી રનટાઇમ પ્રોફાઇલમાં ગતિશીલ રીતે અનુકૂલિત કરી શકાતો નથી. સંગ્રહ ટ્રેડ-ઓફ પણ જુઓ asm.js કમ્પાઇલર (જાવાસ્ક્રિપ્ટ) બાર્ટોક (CIL) એક્સેલસિયોર JET (જાવા) જાવા માટે Gᱱᱩ કમ્પાઇલર (CIL) નેટિવ ઈમેજ જનરેટર (CIL) રુબીમોશન (રુબી) સંદર્ભો બાહ્ય કડીઓ ઝડપઃ NGen શક્તિશાળી નવી સુવિધાઓ સાથે તમારું પ્રદર્શન સુધારે છે-MSDN મેગેઝિન, એપ્રિલ 2005 મોનો AOT એક્સેલસિયોર JET-જાવા માટે AOT કમ્પાઇલર સાથે પ્રમાણિત જાવા SE અમલીકરણ asm.js રીઅલ-ટાઇમ જાવાનું AOT સંકલન, ભાગ 2: સંકલન તકનીકોની સરખામણી-IBM ડેવલપરવર્ક્સ, એપ્રિલ 2007 સ્વિંગ પ્રદર્શનમાં સુધારઃ JIT વિરુદ્ધ AOT સંકલન-લિનક્સ