Adaptive optimization とは

適応最適化は、現在の実行プロファイルに基づいてプログラムの部分を動的に再コンパイルするコンピュータサイエンスの技術です。簡単な実装では、適応オプティマイザは、ジャストインタイムコンパイルと命令の解釈とのトレードオフを単純に行う場合があります。別のレベルでは、適応最適化は、ローカルデータ条件を利用して分岐を最適化し、インライン展開を使用してプロシージャコールのコストを削減することができる。
次々とトランザクションを処理する仮想的な銀行業務アプリケーションを考えてみましょう。これらの取引は、小切手、預金、および多数のより曖昧な取引である可能性があります。プログラムが実行されると、実際のデータは、単一のデポジットを処理することなく、不正な口座番号で単一の小切手を処理することなく、何万件もの小切手をクリアすることから成っている可能性があります。適応オプティマイザは、この一般的なケースを最適化するためにアセンブリコードをコンパイルします。代わりにシステムが数万のデポジットの処理を開始した場合、適応オプティマイザはアセンブリコードを再コンパイルして新しい共通のケースを最適化します。この最適化には、コードのインライン化が含まれる場合があります。
適応最適化の例には、HotSpotとHPのDynamoシステムがあります。
いくつかのシステム、特にJava仮想マシンでは、一連のバイトコード命令に対する実行を、明らかに逆転させることができる。これにより、適応オプティマイザはコードに関する危険な仮定を立てることができます。上記の例では、オプティマイザはすべてのトランザクションがチェックであり、すべてのアカウント番号が有効であると仮定しています。これらの前提が正しくないとわかると、適応オプティマイザは有効な状態に「巻き戻す」ことができ、バイトコード命令を正しく解釈できます。