Adaptiv optimering

Adaptiv optimering  är en teknik inom datavetenskap och programmering som dynamiskt kompilerar programfragment baserat på den aktuella exekveringsprofilen . I sin enklaste implementering kan den adaptiva optimeraren helt enkelt välja mellan kompilering och instruktionstolkning. På en annan nivå kan adaptiv optimering dra fördel av lokala dataförhållanden för att optimera filialer och använda inline- expansion för att minska kontextväxlingar . 

Överväg en hypotetisk bankapplikation som behandlar transaktioner efter varandra. Dessa transaktioner kan vara avskrivningar, bidrag och många andra obskyra transaktioner. När programmet körs kan den faktiska datan bestå av att tömma tiotusentals debiteringar utan en enda avgiftsbearbetning och utan en enda debetbearbetning från ett bedrägligt konto. Den adaptiva optimeraren kommer att kompilera till inbyggd kod och optimera den för det allmänna fallet. Om systemet sedan börjar behandla tiotusentals bidrag istället, kommer den adaptiva optimeraren att kompilera om till maskinkod för att optimera för de nya gemensamma förhållandena. Dessa optimeringar kan inkludera funktionsinförande eller flytta felhanteringskod till en sekundär cache.

Exempel

Deoptimering

På vissa system, särskilt Java Virtual Machine , kan exekveringen av en rad bytekodinstruktioner bevisligen omvändas. Detta tillåter den adaptiva optimeraren att göra riskabla antaganden om koden. I exemplet ovan kan optimeraren anta att alla transaktioner är debiteringar och att alla kontonummer är korrekta. När dessa antaganden visar sig vara felaktiga kan den adaptiva optimeraren "falla tillbaka" till rätt tillstånd och sedan tolka bytekodinstruktionerna korrekt.

Se även

Anteckningar

  1. HP:s Dynamo . Datum för åtkomst: 7 december 2014. Arkiverad från originalet 5 februari 2012.

Litteratur