Profiling (computer programming)
સોફ્ટવેર એન્જિનિયરિંગમાં, પ્રોફાઇલિંગ ("પ્રોગ્રામ પ્રોફાઇલિંગ", "સોફ્ટવેર પ્રોફાઇલિંગ") એ ગતિશીલ પ્રોગ્રામ વિશ્લેષણનું એક સ્વરૂપ છે જે માપે છે, ઉદાહરણ તરીકે, પ્રોગ્રામની જગ્યા (મેમરી) અથવા સમયની જટિલતા, ચોક્કસ સૂચનાઓનો ઉપયોગ, અથવા આવર્તન અને કાર્ય કૉલ્સનો સમયગાળો. સૌથી સામાન્ય રીતે, પ્રોફાઇલિંગ માહિતી પ્રોગ્રામ ઓપ્ટિમાઇઝેશનને મદદ કરે છે, અને વધુ ચોક્કસપણે, પ્રદર્શન ઇજનેરી. પ્રોફાઇલર (અથવા કોડ પ્રોફાઇલર) નામના સાધનનો ઉપયોગ કરીને પ્રોગ્રામ સ્રોત કોડ અથવા તેના દ્વિસંગી એક્ઝેક્યુટેબલ સ્વરૂપને ઇન્સ્ટ્રુમેન્ટિંગ દ્વારા પ્રોફાઇલિંગ પ્રાપ્ત થાય છે. રૂપરેખાઓ સંખ્યાબંધ વિવિધ તકનીકોનો ઉપયોગ કરી શકે છે, જેમ કે ઘટના-આધારિત, આંકડાકીય, ઇન્સ્ટ્રુમેન્ટેડ અને સિમ્યુલેશન પદ્ધતિઓ. પ્રોગ્રામ ઇવેન્ટ્સ એકત્ર કરવા પ્રોફાઇલર્સ ડેટા એકત્રિત કરવા માટે વિવિધ તકનીકોનો ઉપયોગ કરે છે, જેમાં હાર્ડવેર વિક્ષેપો, કોડ ઇન્સ્ટ્રુમેન્ટેશન, સૂચના સેટ સિમ્યુલેશન, ઓપરેટિંગ સિસ્ટમ હુક્સ અને પ્રદર્શન કાઉન્ટરનો સમાવેશ થાય છે. પ્રોફાઇલરનો ઉપયોગ પ્રોફાઇલરનું આઉટપુટ આ પ્રમાણે હોઈ શકે છેઃ અવલોકન કરાયેલી ઘટનાઓનો આંકડાકીય સારાંશ (એક રૂપરેખા) સારાંશ રૂપરેખા માહિતી ઘણીવાર જ્યાં ઘટનાઓ બને છે તે સ્રોત કોડ નિવેદનોની સામે ટિપ્પણી દર્શાવવામાં આવે છે, તેથી માપન ડેટાનું કદ પ્રોગ્રામના કોડ કદ સાથે રેખીય હોય છે. / *------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ (સંપૂર્ણ) ટ્રેસનું કદ પ્રોગ્રામના સૂચના માર્ગની લંબાઈ સાથે રેખીય હોય છે, જે તેને કંઈક અંશે અવ્યવહારુ બનાવે છે. તેથી પ્રોગ્રામમાં એક તબક્કે ટ્રેસ શરૂ કરી શકાય છે અને આઉટપુટને મર્યાદિત કરવા માટે બીજા તબક્કે સમાપ્ત કરી શકાય છે. હાયપરવાઇઝર સાથે સતત ક્રિયાપ્રતિક્રિયા (દાખલા તરીકે ઓન-સ્ક્રીન ડિસ્પ્લે દ્વારા સતત અથવા સમયાંતરે દેખરેખ) આ અમલ દરમિયાન કોઈપણ ઇચ્છિત બિંદુ પર ટ્રેસને ચાલુ અથવા બંધ કરવાની તક પૂરી પાડે છે ઉપરાંત (હજી પણ અમલમાં છે) પ્રોગ્રામ વિશે ચાલુ મેટ્રિક્સ જોવા ઉપરાંત. તે અન્ય સમાંતર પ્રક્રિયાઓ સાથેની ક્રિયાપ્રતિક્રિયાઓનું વધુ વિગતવાર પરીક્ષણ કરવા માટે નિર્ણાયક બિંદુઓ પર અસિંક્રોનસ પ્રક્રિયાઓને સ્થગિત કરવાની તક પણ પ્રદાન કરે છે. લાંબા સમયથી ચાલતા કોડને સ્પષ્ટ કરીને પ્રદર્શનના અવરોધોને ઓળખવા માટે પ્રોફાઇલરને વ્યક્તિગત પદ્ધતિ પર અથવા મોડ્યુલ અથવા પ્રોગ્રામના સ્કેલ પર લાગુ કરી શકાય છે. પ્રોફાઇલરનો ઉપયોગ સમયના દૃષ્ટિકોણથી કોડને સમજવા માટે થઈ શકે છે, જેનો ઉદ્દેશ તેને વિવિધ રનટાઇમ પરિસ્થિતિઓ અથવા વિવિધ ભારને નિયંત્રિત કરવા માટે શ્રેષ્ઠ બનાવવાનો છે. રૂપરેખા-માર્ગદર્શિત ઓપ્ટિમાઇઝેશન પ્રદાન કરતા સંકલનકર્તા દ્વારા રૂપરેખા પરિણામો ગ્રહણ કરી શકાય છે. પ્રોફાઇલિંગ પરિણામોનો ઉપયોગ વ્યક્તિગત અલ્ગોરિધમની ડિઝાઇન અને ઓપ્ટિમાઇઝેશનને માર્ગદર્શન આપવા માટે થઈ શકે છે; ક્રોસ મેચિંગ વાઇલ્ડકાર્ડ્સ અલ્ગોરિધમ એક ઉદાહરણ છે. પ્રોફાઇલર્સ કેટલીક એપ્લિકેશન પ્રદર્શન વ્યવસ્થાપન પ્રણાલીઓમાં બનાવવામાં આવે છે જે વિતરિત એપ્લિકેશનોમાં વ્યવહારના વર્કલોડની સમજ પ્રદાન કરવા માટે પ્રોફાઇલિંગ ડેટાને એકત્રિત કરે છે. ઇતિહાસ પ્રદર્શન-વિશ્લેષણ સાધનો 1970 ના દાયકાની શરૂઆતથી આઇબીએમ/360 અને આઇબીએમ/370 પ્લેટફોર્મ પર અસ્તિત્વમાં હતા, જે સામાન્ય રીતે ટાઈમર વિક્ષેપો પર આધારિત હોય છે, જે કોડને અમલમાં મૂકવા માટે "હોટ સ્પોટ્સ" શોધવા માટે સેટ ટાઈમર-અંતરાલ પર પ્રોગ્રામ સ્થિતિ શબ્દ (પીએસડબલ્યુ) રેકોર્ડ કરે છે. આ નમૂનાનું પ્રારંભિક ઉદાહરણ હતું (નીચે જુઓ). 1974 ની શરૂઆતમાં સૂચના-સેટ સિમ્યુલેટરોએ સંપૂર્ણ ટ્રેસ અને અન્ય પ્રદર્શન-દેખરેખ સુવિધાઓને મંજૂરી આપી હતી. યુનિક્સ પર પ્રોફાઇલર-સંચાલિત પ્રોગ્રામ વિશ્લેષણ 1973નું છે, જ્યારે યુનિક્સ સિસ્ટમોમાં એક મૂળભૂત સાધન, પ્રો. નો સમાવેશ થતો હતો, જેમાં દરેક કાર્ય અને તે પ્રોગ્રામના અમલીકરણમાં કેટલો સમય લે છે તેની યાદી આપવામાં આવી હતી. 1982માં જીપ્રોફે આ ખ્યાલને સંપૂર્ણ કોલ ગ્રાફ વિશ્લેષણ સુધી વિસ્તાર્યો હતો. 1994માં, ડિજિટલ ઇક્વિપમેન્ટ કોર્પોરેશનના અમિતાભ શ્રીવાસ્તવ અને એલન યુસ્ટેસે એ. ટી. ઓ. એમ. (એનાલિસિસ ટૂલ્સ વિથ ઓ. એમ.) નું વર્ણન કરતું એક પેપર પ્રકાશિત કર્યું હતું. એ. ટી. ઓ. એમ. પ્લેટફોર્મ પ્રોગ્રામને તેના પોતાના પ્રોફાઇલરમાં રૂપાંતરિત કરે છેઃ સંકલન સમયે, તે વિશ્લેષણ કરવા માટે પ્રોગ્રામમાં કોડ દાખલ કરે છે. તે દાખલ કરેલ કોડ વિશ્લેષણ ડેટાનું આઉટપુટ આપે છે. આ તકનીક-પોતાને વિશ્લેષણ કરવા માટે પ્રોગ્રામમાં ફેરફાર કરવો-"ઇન્સ્ટ્રુમેન્ટેશન" તરીકે ઓળખાય છે. 2004માં જીપ્રોફ અને એ. ટી. ઓ. એમ. બંને પેપર 1999માં પૂરા થયેલા 20 વર્ષના સમયગાળા માટે 50 સૌથી પ્રભાવશાળી પી. એલ. ડી. આઈ. પેપરની યાદીમાં દેખાયા હતા. આઉટપુટ ફ્લેટ પ્રોફાઇલર ફ્લેટ પ્રોફાઇલર પર આધારિત પ્રોફાઇલર પ્રકારો કોલમાંથી સરેરાશ કોલ સમયની ગણતરી કરે છે અને કોલ અથવા સંદર્ભના આધારે કોલ સમયને વિભાજિત કરતા નથી. કોલ-ગ્રાફ પ્રોફાઇલર કોલ ગ્રાફ પ્રોફાઇલર કોલનો સમય અને કાર્યોની આવર્તન દર્શાવે છે, અને કૅલી પર આધારિત કોલ-ચેઇન્સ પણ દર્શાવે છે. કેટલાક સાધનોમાં સંપૂર્ણ સંદર્ભ સચવાયેલો નથી. ઇનપુટ-સેન્સિટિવ પ્રોફાઇલર ઇનપુટ-સેન્સિટિવ પ્રોફાઇલર ઇનપુટ કદ અથવા ઇનપુટ મૂલ્યો જેવા ઇનપુટ વર્કલોડના લક્ષણો સાથે પ્રદર્શનના પગલાંને સંબંધિત કરીને ફ્લેટ અથવા કોલ-ગ્રાફ પ્રોફાઇલરમાં વધુ પરિમાણ ઉમેરે છે. તેઓ ચાર્ટ બનાવે છે જે દર્શાવે છે કે એપ્લિકેશનનું પ્રદર્શન તેના ઇનપુટના કાર્ય તરીકે કેવી રીતે માપવામાં આવે છે. પ્રોફાઇલર પ્રકારોમાં ડેટા ગ્રાન્યુલારિટી પ્રોફાઇલર, જે પોતે પણ પ્રોગ્રામ છે, તેમના અમલ પર માહિતી એકત્રિત કરીને લક્ષ્ય પ્રોગ્રામોનું વિશ્લેષણ કરે છે. પ્રોફાઇલર માહિતી કેવી રીતે એકત્રિત કરે છે તેના આધારે તેમની માહિતીની ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી ઝીણી રૂપરેખાઓ માહિતી એકત્રિત કરવા માટે કાર્યક્રમના અમલમાં વિક્ષેપ પાડે છે, જે સમયના માપમાં મર્યાદિત રીઝોલ્યુશનમાં પરિણમી શકે છે, જેને મીઠાના દાણાની સાથે લેવું જોઈએ. મૂળભૂત બ્લોક રૂપરેખાકારો કોડની દરેક લીટીને અમલમાં મૂકવા માટે સમર્પિત સંખ્યાબંધ મશીન ઘડિયાળ ચક્રની જાણ કરે છે, અથવા આને એકસાથે ઉમેરવા પર આધારિત સમયની જાણ કરે છે; મૂળભૂત બ્લોક દીઠ નોંધાયેલ સમય કેશ હિટ અને મિસ વચ્ચેના તફાવતને પ્રતિબિંબિત કરી શકશે નહીં. ઇવેન્ટ-આધારિત પ્રોફાઇલર અહીં સૂચિબદ્ધ પ્રોગ્રામિંગ ભાષાઓમાં ઇવેન્ટ-આધારિત પ્રોફાઇલર છેઃ જાવાઃ જે. વી. એમ. ટી. આઈ. (જે. વી. એમ. ટૂલ્સ ઇન્ટરફેસ) એ. પી. આઈ., અગાઉ જે. વી. એમ. પી. આઈ. (જે. વી. એમ. પ્રોફાઇલિંગ ઇન્ટરફેસ), કોલ્સ, ક્લાસ-લોડ, અનલોડ, થ્રેડ એન્ટર લીવ જેવી ઇવેન્ટ્સને ટ્રેપ કરવા માટે પ્રોફાઇલરને હૂક પ્રદાન કરે છે. . NET: પ્રોફાઇલિંગ API નો ઉપયોગ કરીને COM સર્વર તરીકે પ્રોફાઇલિંગ એજન્ટને CLR સાથે જોડી શકાય છે. જાવાની જેમ, રનટાઇમ પછી જેઆઇટી/એન્ટર/લીવ પદ્ધતિ, ઓબ્જેક્ટ બનાવટ વગેરે જેવી ઘટનાઓને ફસાવવા માટે એજન્ટમાં વિવિધ કોલબૅક પ્રદાન કરે છે. ખાસ કરીને શક્તિશાળી એ છે કે પ્રોફાઇલિંગ એજન્ટ લક્ષ્ય એપ્લિકેશનના બાઇટકોડને મનસ્વી રીતે ફરીથી લખી શકે છે. પાયથોનઃ પાયથોન પ્રોફાઇલિંગમાં પ્રોફાઇલ મોડ્યુલ, હોટશોટ (જે કોલ-ગ્રાફ આધારિત છે), અને c _ {કૉલ, રીટર્ન, એક્સેપ્શન}, પાયથોન _ {કૉલ, રીટર્ન, એક્સેપ્શન} જેવી ઘટનાઓને ટ્રેપ કરવા માટે 'sys.setprofile' ફંક્શનનો ઉપયોગ થાય છે. રૂબીઃ રૂબી પ્રોફાઇલિંગ માટે પાયથોનના સમાન ઇન્ટરફેસનો પણ ઉપયોગ કરે છે. profile.rb, મોડ્યુલમાં ફ્લેટ-પ્રોફાઇલર અને રુબી-પ્રો એ સી-એક્સ્ટેંશન હાજર છે. આંકડાકીય રૂપરેખાઓ કેટલાક રૂપરેખાઓ નમૂના દ્વારા કાર્ય કરે છે. સેમ્પલિંગ પ્રોફાઇલર ઓપરેટિંગ સિસ્ટમ ઇન્ટરપ્ટ્સનો ઉપયોગ કરીને નિયમિત અંતરાલે લક્ષ્ય પ્રોગ્રામના કોલ સ્ટેકની તપાસ કરે છે. નમૂનાની રૂપરેખાઓ સામાન્ય રીતે ઓછી આંકડાકીય રીતે સચોટ અને ચોક્કસ હોય છે, પરંતુ લક્ષ્ય કાર્યક્રમને સંપૂર્ણ ઝડપે ચલાવવાની મંજૂરી આપે છે. પરિણામી માહિતી ચોક્કસ નથી, પરંતુ આંકડાકીય અંદાજ છે. "ભૂલની વાસ્તવિક માત્રા સામાન્ય રીતે એકથી વધુ નમૂનાનો સમયગાળો હોય છે. હકીકતમાં, જો મૂલ્ય નમૂનાના સમયગાળાની n ગણી હોય, તો તેમાં અપેક્ષિત ભૂલ એ n નમૂનાના સમયગાળાનો વર્ગમૂળ છે. વ્યવહારમાં, સેમ્પલિંગ પ્રોફાઇલર્સ ઘણીવાર અન્ય અભિગમોની તુલનામાં લક્ષ્ય કાર્યક્રમના અમલીકરણનું વધુ સચોટ ચિત્ર પ્રદાન કરી શકે છે, કારણ કે તેઓ લક્ષ્ય કાર્યક્રમ માટે ઘુસણખોરી કરતા નથી, અને આમ તેની ઘણી આડઅસરો હોતી નથી (જેમ કે મેમરી કેશ અથવા સૂચના ડીકોડિંગ પાઇપલાઇન પર). ઉપરાંત તેઓ અમલની ઝડપને એટલી અસર કરતા નથી, તેથી તેઓ એવા મુદ્દાઓ શોધી શકે છે જે અન્યથા છુપાયેલા હશે. તેઓ નાના, જેને વારંવાર દિનચર્યાઓ અથવા 'ચુસ્ત' લૂપ્સ કહેવામાં આવે છે તેના ખર્ચનું વધુ પડતું મૂલ્યાંકન કરવા માટે પણ પ્રમાણમાં રોગપ્રતિકારક છે. તેઓ સિસ્ટમ કોલ પ્રોસેસિંગ જેવા વિક્ષેપિત કર્નલ મોડ વિરુદ્ધ વપરાશકર્તા મોડમાં વિતાવેલા સમયની સાપેક્ષ રકમ બતાવી શકે છે. તેમ છતાં, વિક્ષેપોને હેન્ડલ કરવા માટે કર્નલ કોડમાં CPU ચક્રોનું નાનું નુકસાન થાય છે, કેશનો ઉપયોગ બદલવામાં આવે છે, અને તે અવિરત કર્નલ કોડ (માઇક્રોસેકન્ડ-રેન્જ પ્રવૃત્તિ) માં થતા વિવિધ કાર્યોને અલગ કરવામાં અસમર્થ છે. સમર્પિત હાર્ડવેર આનાથી આગળ જઈ શકે છેઃ એઆરએમ કોર્ટેક્સ-એમ3 અને કેટલાક તાજેતરના એમઆઇપીએસ પ્રોસેસર્સ જેટીએજી ઇન્ટરફેસમાં પીસીએસએએમપીએલઇ રજિસ્ટર હોય છે, જે પ્રોગ્રામ કાઉન્ટરનું ખરેખર નિદાન ન કરી શકાય તેવી રીતે નમૂના લે છે, જે ફ્લેટ પ્રોફાઇલના બિન-ઘુસણખોરી સંગ્રહને મંજૂરી આપે છે. જાવા/વ્યવસ્થાપિત કોડ માટે સામાન્ય રીતે ઉપયોગમાં લેવાતા કેટલાક આંકડાકીય રૂપરેખાઓ સ્માર્ટબીયર સોફ્ટવેરનું AQટાઇમ અને માઇક્રોસોફ્ટનું CLR પ્રોફાઇલર છે. તે પ્રોફાઇલર્સ એપલ ઇન્કના શાર્ક (ઓએસએક્સ), ઓપ્રોફાઇલ (લિનક્સ), ઇન્ટેલ વીટ્યુન અને પેરેલલ એમ્પ્લીફાયર (ઇન્ટેલ પેરેલલ સ્ટુડિયોનો ભાગ) અને ઓરેકલ પરફોર્મન્સ એનાલાઇઝર સાથે મૂળ કોડ પ્રોફાઇલિંગને પણ સપોર્ટ કરે છે. ઇન્સ્ટ્રુમેન્ટેશન આ તકનીક અસરકારક રીતે જરૂરી માહિતી એકત્રિત કરવા માટે લક્ષ્ય કાર્યક્રમમાં સૂચનાઓ ઉમેરે છે. નોંધ લો કે પ્રોગ્રામને ઇન્સ્ટ્રુમેન્ટિંગ કરવાથી કામગીરીમાં ફેરફાર થઈ શકે છે, અને કેટલાક કિસ્સાઓમાં અચોક્કસ પરિણામો અને/અથવા હેઇસેનબગ્સ તરફ દોરી શકે છે. તેની અસર કઈ માહિતી એકત્રિત કરવામાં આવી રહી છે તેના પર, નોંધવામાં આવેલી સમયની વિગતોના સ્તર પર અને મૂળભૂત બ્લોક પ્રોફાઇલિંગનો ઉપયોગ ઇન્સ્ટ્રુમેન્ટેશન સાથે કરવામાં આવે છે કે કેમ તેના પર નિર્ભર રહેશે. ઉદાહરણ તરીકે, દરેક પ્રક્રિયા/નિયમિત કૉલની ગણતરી કરવા માટે કોડ ઉમેરવાથી કદાચ દરેક નિવેદનનું કેટલી વાર પાલન કરવામાં આવે છે તેની ગણતરી કરતાં ઓછી અસર થશે. કેટલાક કમ્પ્યુટર્સ પાસે માહિતી એકત્રિત કરવા માટે વિશેષ હાર્ડવેર હોય છે; આ કિસ્સામાં પ્રોગ્રામ પરની અસર ન્યૂનતમ હોય છે. પ્રોફાઇલર માટે ઉપલબ્ધ નિયંત્રણનું સ્તર અને સમયના ઠરાવની માત્રા નક્કી કરવા માટે ઇન્સ્ટ્રુમેન્ટેશન ચાવીરૂપ છે. માર્ગદર્શિકાઃ પ્રોગ્રામર દ્વારા કરવામાં આવે છે, દા. ત. રનટાઇમ્સની સ્પષ્ટ રીતે ગણતરી કરવા માટે સૂચનાઓ ઉમેરીને, એપ્લિકેશન રિસ્પોન્સ મેઝરમેન્ટ સ્ટાન્ડર્ડ જેવા માપન API માટે ફક્ત ઘટનાઓ અથવા કૉલ્સની ગણતરી કરો. સ્વચાલિત સ્રોત સ્તરઃ ઇન્સ્ટ્રુમેન્ટેશન નીતિ અનુસાર સ્વચાલિત સાધન દ્વારા સ્રોત કોડમાં ઇન્સ્ટ્રુમેન્ટેશન ઉમેરવામાં આવે છે. મધ્યવર્તી ભાષાઃ બહુવિધ ઉચ્ચ-સ્તરની સ્રોત ભાષાઓને ટેકો આપતા અને (બિન-પ્રતીકાત્મક) દ્વિસંગી ઓફસેટ પુનઃલેખન મુદ્દાઓને ટાળતા એસેમ્બલી અથવા વિઘટિત બાઈટકોડ્સમાં ઇન્સ્ટ્રુમેન્ટેશન ઉમેરવામાં આવે છે. કમ્પાઇલર સહાયિત દ્વિસંગી અનુવાદઃ આ સાધન સંકલિત એક્ઝેક્યુટેબલમાં ઇન્સ્ટ્રુમેન્ટેશન ઉમેરે છે. રનટાઇમ ઇન્સ્ટ્રુમેન્ટેશનઃ એક્ઝેક્યુશન પહેલાં સીધા જ કોડ ઇન્સ્ટ્રુમેન્ટેડ છે. કાર્યક્રમની સંપૂર્ણ દેખરેખ અને નિયંત્રણ સાધન દ્વારા કરવામાં આવે છે. રનટાઇમ ઈન્જેક્શનઃ રનટાઇમ ઇન્સ્ટ્રુમેન્ટેશન કરતાં વધુ હળવું. કોડને સહાયક કાર્યોમાં કૂદકો મારવા માટે રનટાઇમ પર સુધારવામાં આવે છે. દુભાષિયો ઇન્સ્ટ્રુમેન્ટેશન દુભાષિયો ડીબગ વિકલ્પો પ્રદર્શન મેટ્રિક્સના સંગ્રહને સક્ષમ કરી શકે છે કારણ કે દુભાષિયો દરેક લક્ષ્ય નિવેદનનો સામનો કરે છે. બાઈટકોડ, કંટ્રોલ ટેબલ અથવા જેઆઇટી દુભાષિયા એ ત્રણ ઉદાહરણો છે જે સામાન્ય રીતે લક્ષ્ય કોડના અમલીકરણ પર સંપૂર્ણ નિયંત્રણ ધરાવે છે, આમ અત્યંત વ્યાપક ડેટા સંગ્રહની તકોને સક્ષમ કરે છે. હાયપરવાઇઝર/સિમ્યુલેટર હાયપરવાઇઝરઃ માહિતી હાયપરવાઇઝર હેઠળ (સામાન્ય રીતે) બિનપરિવર્તિત કાર્યક્રમ ચલાવીને એકત્રિત કરવામાં આવે છે. ઉદાહરણ તરીકેઃ સિમમોન સિમ્યુલેટર અને હાયપરવાઇઝરઃ ઇન્સ્ટ્રક્શન સેટ સિમ્યુલેટર હેઠળ બિનપરિવર્તિત પ્રોગ્રામ ચલાવીને ઇન્ટરેક્ટિવ રીતે અને પસંદગીયુક્ત રીતે ડેટા એકત્રિત કરવામાં આવે છે. એલ્ગોરિધમિક કાર્યક્ષમતા પણ જુઓ બેન્ચમાર્ક જાવા પ્રદર્શન પ્રદર્શન વિશ્લેષણ સાધનોની સૂચિ PAPI એ આધુનિક માઇક્રોપ્રોસેસરો પર હાર્ડવેર પ્રદર્શન કાઉન્ટર્સ માટે પોર્ટેબલ ઇન્ટરફેસ (લાઇબ્રેરીના સ્વરૂપમાં) છે. પરફોર્મન્સ એન્જિનિયરિંગ પરફોર્મન્સ આગાહી પરફોર્મન્સ ટ્યુનિંગ રનટાઇમ વેરિફિકેશન પ્રોફાઇલ-માર્ગદર્શિત ઓપ્ટિમાઇઝેશન સ્ટેટિક કોડ એનાલિસિસ સોફ્ટવેર આર્કિયોલોજી વર્સ્ટ-કેસ એક્ઝેક્યુશન ટાઇમ (WCET) સંદર્ભો બાહ્ય લિંક્સ લેખ "સ્પીડ માટેની જરૂરિયાત-પરફોર્મન્સ અવરોધો દૂર કરવા" IBM રેશનલ એપ્લિકેશન ડેવલપરનો ઉપયોગ કરીને જાવા એપ્લિકેશનોના એક્ઝેક્યુશન સમયનું વિશ્લેષણ કરવા પર. વીટ્યુન પરફોર્મન્સ એનાલાઇઝર સોફ્ટવેર ઓપ્ટિમાઇઝેશનનો ઉપયોગ કરીને પ્રોફાઇલિંગ રનટાઇમ જનરેટેડ અને ઇન્ટરપ્રિટેડ કોડ