• Showing Page History #27507
  • Showing Page History #27508
  • Showing Page History #27512

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();

このような、コンパイルでは実施されないようなレベルで且つ機械的に変換可能(等価である)ものの最適化を行う。


リアルタイム最適化 (高度最適化)