Adaptiv optimering - Adaptive optimization
Adaptiv optimering er en teknik inden for datalogi, der udfører dynamisk rekompilering af dele af et program baseret på den aktuelle udførelsesprofil. Med en simpel implementering kan en adaptiv optimering simpelthen afveje mellem just-in-time kompilering og fortolkningsinstruktioner . På et andet niveau kan adaptiv optimering udnytte lokale dataforhold til at optimere væk filialer og bruge inline-udvidelse til at reducere omkostningerne ved procedureopkald.
Overvej en hypotetisk bankapplikation, der håndterer transaktioner efter hinanden. Disse transaktioner kan være checks, indskud og et stort antal mere uklare transaktioner. Når programmet udføres, kan de faktiske data bestå i at rydde titusinder af checks uden at behandle en enkelt indbetaling og uden at behandle en enkelt check med et falske kontonummer. En adaptiv optimizer ville kompilere samlingskode for at optimere til denne almindelige sag. Hvis systemet derefter begyndte at behandle titusindvis af indskud i stedet, ville den adaptive optimizer kompilere samlekoden for at optimere den nye almindelige sag. Denne optimering kan omfatte inline-kode.
Eksempler på adaptiv optimering inkluderer HotSpot og HPs Dynamo-system .
I nogle systemer, især Java Virtual Machine , kan eksekvering over en række bytecode-instruktioner muligvis vendes. Dette gør det muligt for en adaptiv optimering at foretage risikable antagelser om koden. I ovenstående eksempel kan optimeringsprogrammet antage, at alle transaktioner er checks, og at alle kontonumre er gyldige. Når disse antagelser viser sig at være forkerte, kan den adaptive optimizer 'afvikle' til en gyldig tilstand og derefter fortolke instruktionerne for bytekode korrekt.
Se også
Referencer
eksterne links
- CiteSeer for "Adaptiv optimering i Jalapeño JVM (2000)" af Matthew Arnold, Stephen Fink, David Grove, Michael Hind, Peter F. Sweeney. Indeholder links til hele papiret i forskellige formater.