Kallande kontextprofiler används i många inter-procedural kodoptimeringar och i övergripande programförståelse. Tyvärr är insamlingen av profilinformation mycket påträngande på grund av den höga frekvensen av metodanrop i de flesta applikationer. Tidigare föreslagna calling-context profilering mekanismer lider följaktligen av antingen låg noggrannhet, hög overhead, eller båda. Vi har utvecklat ett nytt tillvägagångssätt för att bygga det anropande kontextträdet på runtime, som kallas adaptiv sprängning. Genom att selektivt hämma redundant profilering minskar detta tillvägagångssätt dramatiskt overhead samtidigt som profilnoggrannheten bevaras. Vi visar först nackdelarna med tidigare föreslagna mekanismer för kontextprofilering. Vi visar att en låg-overhead lösning med hjälp av prov stack-walking ensam är mindre än 50% korrekt, baserat på graden av överlappning med en komplett anropande-context träd. Vi visar också att en statisk sprängningsmetod samlar in en mycket exakt profil, men orsakar en oacceptabel avmattning av tillämpningen. Vår adaptiva lösning uppnår 85% grad av överlappning och ger en 88% hot-edge täckning vid användning av en 0,1 hot-edge tröskel, samtidigt dramatiskt minska overhead jämfört med den statiska sprängning strategi.
Försök att ytterligare minska overhead med en teknik som kallas "adaptiv sprängning" REF har gjorts.
Accurate, efficient, and adaptive calling context profiling
{'venue': "PLDI '06", 'journal': None, 'mag_field_of_study': ['Computer Science']}