Otimização adaptativa - Adaptive optimization

A otimização adaptativa é uma técnica em ciência da computação que realiza recompilação dinâmica de partes de um programa com base no perfil de execução atual. Com uma implementação simples, um otimizador adaptável pode simplesmente fazer uma troca entre a compilação just-in-time e as instruções de interpretação . Em outro nível, a otimização adaptativa pode tirar proveito das condições de dados locais para otimizar ramificações externas e usar a expansão em linha para diminuir o custo das chamadas de procedimento.

Considere um aplicativo bancário hipotético que lida com transações uma após a outra. Essas transações podem ser cheques, depósitos e um grande número de transações mais obscuras. Quando o programa é executado, os dados reais podem consistir na compensação de dezenas de milhares de cheques sem processar um único depósito e sem processar um único cheque com um número de conta fraudulento. Um otimizador adaptável compilaria o código assembly para otimizar para esse caso comum. Se o sistema então começasse a processar dezenas de milhares de depósitos, o otimizador adaptativo recompilaria o código de montagem para otimizar o novo caso comum. Essa otimização pode incluir código embutido.

Exemplos de otimização adaptativa incluem HotSpot e o sistema Dynamo da HP .

Em alguns sistemas, notadamente na Java Virtual Machine , a execução em uma série de instruções de bytecode pode ser provavelmente revertida. Isso permite que um otimizador adaptável faça suposições arriscadas sobre o código. No exemplo acima, o otimizador pode assumir que todas as transações são cheques e todos os números de conta são válidos. Quando essas suposições se provam incorretas, o otimizador adaptativo pode 'se recuperar' para um estado válido e então interpretar as instruções do código de byte corretamente.

Veja também

Referências

links externos