Profile-guided optimization
પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશન (પી. જી. ઓ., જેને કેટલીકવાર પોગો તરીકે ઉચ્ચારવામાં આવે છે), જેને પ્રોફાઇલ-નિર્દેશિત પ્રતિસાદ (પી. ડી. એફ.) તરીકે પણ ઓળખવામાં આવે છે, અને પ્રતિસાદ-નિર્દેશિત ઓપ્ટિમાઇઝેશન (એફ. ડી. ઓ.) એ કમ્પ્યુટર પ્રોગ્રામિંગમાં કમ્પાઇલર ઓપ્ટિમાઇઝેશન તકનીક છે જે પ્રોગ્રામ રનટાઇમ પ્રદર્શનને સુધારવા માટે પ્રોફાઇલિંગનો ઉપયોગ કરે છે. સોર્સ કોડના સ્થિર પ્રોગ્રામ વિશ્લેષણ પર આધારિત પદ્ધતિ ઓપ્ટિમાઇઝેશન તકનીકો ખરેખર પ્રોગ્રામને અમલમાં મૂક્યા વિના કોડ પ્રદર્શન સુધારાઓને ધ્યાનમાં લે છે. કોઈ ગતિશીલ કાર્યક્રમ વિશ્લેષણ કરવામાં આવતું નથી. વિશ્લેષણ લૂપની અંદર કોડને પણ ધ્યાનમાં લઈ શકે છે, જેમાં લૂપ કેટલી વાર ચલાવશે તેનો સમાવેશ થાય છે, ઉદાહરણ તરીકે લૂપ અનરોલિંગમાં. બધી રન ટાઇમ માહિતીની ગેરહાજરીમાં, સ્થિર પ્રોગ્રામ વિશ્લેષણ એ ધ્યાનમાં લઈ શકતું નથી કે તે કોડ વિભાગ ખરેખર કેટલી વાર ચલાવવામાં આવે છે. 1957માં ફોરટ્રાન ઓટોમેટિક કોડિંગ સિસ્ટમ તરીકે રજૂ કરાયેલ પ્રથમ ઉચ્ચ-સ્તરના કમ્પાઇલરે કોડને બ્લોકમાં વિભાજીત કર્યો અને દરેક બ્લોકને મોન્ટે કાર્લો ફેશનમાં કોડના સિમ્યુલેટેડ એક્ઝેક્યુશન દ્વારા ચલાવવામાં આવે છે તે આવર્તનનું કોષ્ટક તૈયાર કર્યું જેમાં શરતી સ્થાનાંતરણનું પરિણામ (IF-પ્રકારનાં નિવેદનો દ્વારા) પ્રોગ્રામર દ્વારા જે પણ FREQUENCY નિવેદનો પૂરા પાડવામાં આવ્યા હતા તેના દ્વારા યોગ્ય રીતે ભારિત રેન્ડમ નંબર જનરેટર દ્વારા નક્કી કરવામાં આવે છે. પ્રોગ્રામર દ્વારા પૂરી પાડવામાં આવેલી આવર્તન માહિતીને બદલે, પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશન અંતિમ જનરેટેડ કોડને ઓપ્ટિમાઇઝ કરવા માટે ઇન્સ્ટ્રુમેન્ટેડ પ્રોગ્રામના પ્રોફાઇલિંગ ટેસ્ટ રનના પરિણામોનો ઉપયોગ કરે છે. કમ્પાઇલર પ્રતિનિધિ ઇનપુટ સમૂહમાં પ્રોગ્રામના નમૂના રનમાંથી પ્રોફાઇલ ડેટાને એક્સેસ કરે છે. પરિણામો સૂચવે છે કે કાર્યક્રમના કયા ક્ષેત્રો વધુ વારંવાર ચલાવવામાં આવે છે, અને કયા ક્ષેત્રો ઓછા વારંવાર ચલાવવામાં આવે છે. બધા ઓપ્ટિમાઇઝેશનને પ્રોફાઇલ-માર્ગદર્શિત પ્રતિસાદથી ફાયદો થાય છે કારણ કે સંકલનના નિર્ણયો લેતી વખતે તેઓ હ્યુરિસ્ટિક્સ પર ઓછા નિર્ભર હોય છે. જો કે, ચેતવણી એ છે કે પ્રોફાઇલિંગ તબક્કા દરમિયાન પ્રોગ્રામને આપવામાં આવેલા ડેટાનો નમૂનો લાક્ષણિક ઉપયોગના દૃશ્યોના આંકડાકીય પ્રતિનિધિ હોવો જોઈએ; અન્યથા, પ્રોફાઇલ-માર્ગદર્શિત પ્રતિસાદમાં તેને સુધારવાને બદલે અંતિમ નિર્માણની એકંદર કામગીરીને નુકસાન પહોંચાડવાની સંભાવના છે. જસ્ટ-ઇન-ટાઇમ સંકલન વધુ કાર્યક્ષમ મૂળ કોડ બનાવવા માટે ચલાવવામાં આવેલા કોડના ભાગોને ગતિશીલ રીતે ફરીથી સંકલિત કરવા માટે રનટાઇમ માહિતીનો ઉપયોગ કરી શકે છે. જો એક્ઝેક્યુશન દરમિયાન ડાયનેમિક પ્રોફાઇલ બદલાય છે, તો તે અગાઉના મૂળ કોડને ડીઓપ્ટિમાઇઝ કરી શકે છે, અને નવી પ્રોફાઇલમાંથી માહિતી સાથે ઑપ્ટિમાઇઝ કરેલ નવો કોડ જનરેટ કરી શકે છે. દત્તક પી. જી. ઓ. નો ઉપયોગ કરીને ફાયરફોક્સ બનાવવા માટે ટેકો છે. પી. જી. ઓ. અસરકારક હોવા છતાં, તેના કંટાળાજનક દ્વિ-સંકલન મોડેલને કારણે તેને સોફ્ટવેર પ્રોજેક્ટ્સ દ્વારા વ્યાપકપણે અપનાવવામાં આવ્યું નથી. હાર્ડવેર પરફોર્મન્સ કાઉન્ટર્સનો ઉપયોગ કરીને પ્રોફાઇલ એકત્રિત કરીને ઇન્સ્ટ્રુમેન્ટેશન વિના પી. જી. ઓ. કરવું પણ શક્ય છે. આ નમૂના આધારિત અભિગમ ઘણો ઓછો ઓવરહેડ ધરાવે છે અને તેને વિશેષ સંકલનની જરૂર નથી. હોટસ્પોટ જાવા વર્ચ્યુઅલ મશીન (JVM) ગતિશીલ રીતે મૂળ કોડ પેદા કરવા માટે પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશનનો ઉપયોગ કરે છે. પરિણામે, સોફ્ટવેર દ્વિસંગી તે પ્રાપ્ત કરી રહ્યું છે તે વાસ્તવિક ભાર માટે ઑપ્ટિમાઇઝ થાય છે. જો લોડ બદલાય છે, તો અનુકૂલનશીલ ઓપ્ટિમાઇઝેશન ચાલી રહેલા સોફ્ટવેરને નવા લોડ માટે ઓપ્ટિમાઇઝ કરવા માટે ગતિશીલ રીતે ફરીથી કમ્પાઇલ કરી શકે છે. આનો અર્થ એ છે કે હોટસ્પોટ જેવીએમ પર ચલાવવામાં આવેલ તમામ સોફ્ટવેર પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશનનો અસરકારક રીતે ઉપયોગ કરે છે. ગૂગલ ક્રોમના માઈક્રોસોફ્ટ વિન્ડોઝ વર્ઝનમાં પી. જી. ઓ. અપનાવવામાં આવ્યું છે. પી. જી. ઓ. ને ક્રોમની 64-બીટ આવૃત્તિમાં સક્રિય કરવામાં આવ્યું હતું, જે 32-બીટ આવૃત્તિ માટે આવૃત્તિ 53 અને આવૃત્તિ 54થી શરૂ થાય છે. ગૂગલે એક પેપર પ્રકાશિત કર્યું હતું, જેમાં નિર્માણને માર્ગદર્શન આપવા માટે ઉત્પાદન રૂપરેખાઓનો ઉપયોગ કરવા માટે ઉપયોગમાં લેવાતી સિસ્ટમ (ઓટોએફડીઓ) નું વર્ણન કરવામાં આવ્યું હતું, જેના પરિણામે પ્રદર્શનમાં 10 ટકા સુધી સુધારો થયો હતો. અમલીકરણ પી. જી. ઓ. ને અમલમાં મૂકતા કમ્પાઇલર્સના ઉદાહરણો છેઃ ઇન્ટેલ સી + + કમ્પાઇલર અને ફોરટ્રાન કમ્પાઇલર જી. એન. યુ. કમ્પાઇલર કલેક્શન કમ્પાઇલર ઓરેકલ સોલારિસ સ્ટુડિયો (અગાઉ સન સ્ટુડિયો તરીકે ઓળખાતું હતું) માઇક્રોસોફ્ટ વિઝ્યુઅલ સી + + કમ્પાઇલર ક્લાંગ આઇબીએમ એક્સએલ સી/સી + + ગ્રાલવીએમ એન્ટરપ્રાઇઝ એડિશન. નેટ જેઆઈટી કમ્પાઇલર ગો પણ જુઓ અનુકૂલનશીલ ઓપ્ટિમાઇઝેશન ડાયનેમિક ડેડ કોડ નાબૂદી વૈશ્વિક ઓપ્ટિમાઇઝેશન હોટ સ્પોટ (કમ્પ્યુટર પ્રોગ્રામિંગ) ઇન્ટરપ્રોસેડ્યુરલ ઓપ્ટિમાઇઝેશન લિંક-ટાઇમ ઓપ્ટિમાઇઝેશન (એલટીઓ) ટ્રેસિંગ જસ્ટ-ઇન-ટાઇમ સંકલન સંદર્ભો સંકલન ઓપ્ટિમાઇઝેશન