La optimización adaptativa es una técnica en informática que realiza una recopilación dinámica de partes de un programa en función del perfil de ejecución actual. Con una implementación simple, un optimizador adaptativo puede simplemente hacer un intercambio entre la compilación justo a tiempo y la interpretación de instrucciones . En otro nivel, la optimización adaptativa puede aprovechar las condiciones de los datos locales para optimizar las sucursales alejadas y utilizar la expansión en línea para disminuir el costo de las llamadas a procedimientos.
Considere una aplicación bancaria hipotética que maneja transacciones una tras otra. Estas transacciones pueden ser cheques, depósitos y una gran cantidad de transacciones más oscuras. Cuando se ejecuta el programa, los datos reales pueden consistir en compensar decenas de miles de cheques sin procesar un solo depósito y sin procesar un solo cheque con un número de cuenta fraudulento. Un optimizador adaptativo compilaría código ensamblador para optimizar para este caso común. Si, en cambio, el sistema comenzaba a procesar decenas de miles de depósitos, el optimizador adaptativo volvería a compilar el código ensamblador para optimizar el nuevo caso común. Esta optimización puede incluir código en línea.
Ejemplos de optimización adaptativa incluyen HotSpot y el sistema Dynamo de HP . [1]
En algunos sistemas, notablemente en la máquina virtual Java [ cita requerida ] , la ejecución en un rango de instrucciones de código de bytes puede revertirse. Esto permite que un optimizador adaptativo haga suposiciones arriesgadas sobre el código. En el ejemplo anterior, el optimizador puede asumir que todas las transacciones son cheques y que todos los números de cuenta son válidos. Cuando estas suposiciones resultan incorrectas, el optimizador adaptativo puede "desenrollarse" a un estado válido y luego interpretar correctamente las instrucciones del código de bytes.
Ver también
Referencias
enlaces externos
- CiteSeer para "Adaptive Optimization in the Jalapeño JVM (2000)" por Matthew Arnold, Stephen Fink, David Grove, Michael Hind, Peter F. Sweeney. Contiene enlaces al documento completo en varios formatos.