>Yuki>最適化
Yukiの最適化には大きく分けて以下の二種類がある。
論理的に等価であるものを、より(速度的に・資源的に)効率の良い状態へと最適化、及び無駄なコードを除去する。 インライン展開した方が良いものに関してはインライン展開を実施する。
ただし、多くの最適化はコンパイラの方で勝手にやってくれるので、それらに関しては最適化は実施しない(無駄手間+余計に時間が掛かるだけなので)。 Yukiの最適化では、コンパイラではやってくれないような、より高度な最適化を実施する。
例えば、ソースコード解析ツールの指摘は、その多くが機械的に修正できる。
Javaの文字列連結等が有名な例で、
String s; for(int i=0; i<1000; i++) s += hogeStringArray[i];
Stringクラスへの+=では、毎回StringBufferがnewされるのでメモリ的にも速度的にも非効率である。 このコードは以下へと最適化出来る。
StringBuffer sb; for(int i=0; i<1000; i++) sb.append(hogeStringArray[i]); String s = sb.toString();
このような、コンパイルでは実施されないようなレベルで且つ機械的に変換可能(等価である)ものの最適化を行う。