Adaptivní optimalizace

Adaptivní optimalizace  je technika v informatice a programování , která dynamicky rekompiluje fragmenty programu na základě aktuálního profilu provádění . Ve své nejjednodušší implementaci si adaptivní optimalizátor může jednoduše vybrat mezi průběžnou kompilací a interpretací instrukcí. Na další úrovni může adaptivní optimalizace využít výhod místních datových podmínek k optimalizaci větví a využít inline expanzi ke snížení přepínání kontextu . 

Zvažte hypotetickou bankovní aplikaci, která zpracovává transakce jednu po druhé. Těmito transakcemi mohou být odpisy, příspěvky a mnoho dalších nejasných transakcí. Když je program spuštěn, skutečná data mohou sestávat ze zúčtování desítek tisíc debetů bez zpracování jediného poplatku a bez jediného zpracování debetu z podvodného účtu. Adaptivní optimalizátor se zkompiluje do nativního kódu a optimalizuje jej pro obecný případ. Pokud pak systém začne místo toho zpracovávat desítky tisíc příspěvků, adaptivní optimalizátor se znovu zkompiluje do strojového kódu, aby se optimalizoval pro nové běžné podmínky. Tyto optimalizace mohou zahrnovat vkládání funkcí nebo přesouvání kódu zpracování chyb do sekundární mezipaměti.

Příklady

Deoptimalizace

Na některých systémech, zejména na Java Virtual Machine , může být provádění řady instrukcí bajtového kódu prokazatelně obráceno. To umožňuje adaptivnímu optimalizátoru vytvářet riskantní předpoklady o kódu. Ve výše uvedeném příkladu může optimalizátor předpokládat, že všechny transakce jsou debetní a že všechna čísla účtů jsou správná. Když se tyto předpoklady ukážou jako chybné, adaptivní optimalizátor se může vrátit zpět do správného stavu a poté správně interpretovat instrukce bajtového kódu.

Viz také

Poznámky

  1. Dynamo společnosti HP . Datum přístupu: 7. prosince 2014. Archivováno z originálu 5. února 2012.

Literatura