コンパイラにおける
最適化のメモ
最適化には大別して3つの方法が考えられる。
1.命令の実行回数を減らす
2.並列化する
3.高速な命令を使用するようにする。
1.命令の実行回数を減らす
・実行結果を保存し再利用する。
・コンパイル時に計算できるものは計算を行う。
・ループ内等で無駄に実行している命令を移動する。
・無駄な命令を取り除く
2.並列化する。
・命令セットを並列化する。
・プロセッサレベルで並列化する。
3.高速な命令を使用するようにする。
・対象データが常にレジスタに入っているようにする。
・単純な命令を使用する。
・プログラムの局所性を高め、メモリアクセスを速くする。
※JVMのニーモニックが0〜3までなのは
4つのレジスタを対象としているからか。
iload_0, iload_1, iload_2, iload_3
同時所要変数が5つ以上になると
iload #5
とかこんな感じになって、
レジスタが5つある計算機はいいけど
4つのやつは一回メモリに格納しなきゃなんない。