Ottimizzazione adattativa

In informatica l'ottimizzazione adattativa è una tecnica che esegue una ricompilazione dinamica di porzioni di programma utilizzando dati proveniente dall'esecuzione del programma stesso al fine di migliorare l'esecuzione del programma. Questa tecnica è una via di mezzo tra la compilazione just-in-time e l'interpretazione delle istruzioni. In alcuni casi la ricompilazione dinamica utilizza i dati derivati dall'esecuzione del programma al fine di ridurre i salti condizionati e utilizza l'inline expansion per ridurre i cambi di contesto.

Per esempio si può immaginare un'ipotetica applicazione bancaria. Quest'applicazione permetterebbe di vedere il proprio estratto conto di eseguire movimenti di fondi e tutte le altre classiche operazioni bancarie. L'applicazione verrebbe utilizzata da molte persone che potenzialmente pur potendo eseguire centinaia di operazioni diverse tenderanno a eseguire poche operazioni molto comuni. Un'ottimizzazione dinamica potrebbe riconoscere che alcune transazioni vengono eseguite con estrema frequenza e quindi potrebbe tradurne il codice in codice assembler al fine di migliorare le prestazioni di queste poche transazioni molto comuni.

Deottimizzazione modifica

In alcuni sistemi come le Java Virtual Machine l'esecuzione di bytecode può essere invertita. Questo permette all'ottimizzazione adattiva di verificare quali condizioni sono state verificate dal codice e quindi di eseguire il codice successivo sapendo che quelle condizioni sono già state verificate. Per esempio la precedente applicazione bancaria dopo aver verificato che il conto corrente è valido potrebbe eseguire le operazioni successive senza ogni volta verificare la condizione dato che questa risulta essere già valida.

Collegamenti esterni modifica