こんにちは!

開発部の植草です。

今回はプログラムの高速化手法として
ループ展開(ループアンローリング)をお伝えしたいと思います。

まずは通常のプログラムの例を挙げると
1から100までの和を求めるプログラムだと

For(i=1; i<=100; i++)
sum += i;
}

 

のように殆どの人が書くと思いますし、
そう教わったと思います。

 

勿論、これが正解なのですが、ループを繰り返すというのはコストが掛かるものです。

理由としてはプログラムをアセンブリレベルで見ると
1回のループの終わりのタイミングで比較命令とループの最初に戻るジャンプ命令が
ループ毎にやってきます。

勿論、このコストなど些細な問題なのですがループの回数が多くなるほどそのコストも馬鹿にならなくなるのです。

 

続きは次回に続きます。。。