最適化コンパイラ 【optimizing compiler】
概要
最適化コンパイラ(optimizing compiler)とは、コンパイラの種類の一つで、プログラミング言語のコードを機械語に変換する際に、実行速度やメモリ容量が優れたコードに置き換える機能を内蔵したもの。人間が読み書きしやすい高水準プログラミング言語で書かれたプログラムはそのままではコンピュータで実行することができないため、「コンパイラ」(compiler)という変換プログラムで機械語などの実行可能形式のプログラムに変換される。
単純なコンパイラは高水準言語で書かれた処理を忠実に実行する機械語コードを生成するが、処理の内容を変えずに、より高速に実行したり、より少ないメモリ容量で動作するコードに置き換え可能な場合がある。より優れたコードに置き換える操作を「最適化」(optimization)という。
例えば、ソースコード中に「int n1Week=7*24*3600*1000;」といった定数の計算を行うコードがあるとき、本来なら3回乗算を行う機械語コードに変換されるが、最適化が有効な場合は計算結果である「604800000」を変数に代入するコードが生成され、実行時の計算回数を減らすことができる。これを「定数畳み込み」(constant folding)という。
このような最適化テクニックには多種多様なものが存在し、言語やコンパイラによって対応している手法が異なっている。現代の実用的なコンパイラのほとんどは何らかの最適化を行うよう設計されているため、他と区別する意味で「最適化コンパイラ」という名称を用いることはほとんどなくなっている。
なお、コンパイラ最適化によって開発者が意図しない動作を引き起こすことがあり、バグの原因となることがある。多くのコンパイラは、最適化を行うかどうか、どのような最適化手法を用いるかについてオプションなどで指定することができるようになっている。
(2024.8.31更新)