括弧でくくる

高速化プログラミング   
トップ  >  演算数と高速化  > 括弧でくくる

括弧でくくる

■ 概要

下記の公式は中学の数学で誰でも一度は習ったでしょう。そしてほとんどの人はもう忘れたでしょう。知っていることは知っていますが、数学マニアではない限り、使い道と聞かれたらみんな困るでしょう。しかし高速化プログラミングではその公式が非常に役に立ちます。

( a + b ) * c = a * c + b * c

上の公式の左辺と右辺は等しいので、どれを使っても結果が同じはずです。ここまでは数学の話ですが、コンピューターで計算するときは左辺と右辺には違いがあります。左辺は足し算が一回、掛け算が1回ですが、右辺は足し算が一回、掛け算が2回です。右辺が方が掛け算が1回多いわけです。つまり右辺の方が左辺より演算数が多くて重いです。

そこでもし右辺を計算するプログラムを書こうとするときは左辺のように共通因数のcを出して括弧でくくった方が計算が速くなります。簡単な手法ですし、計算結果がまったく変わらないので、高速化プログラミングの定番といえるでしょう。

実際計算するときは上の公式とまったく同じとは限らないし、まとめられる項の個数が3以上あるかもしれません。例えばa*x+b*x+c*xは(a+b+c)*xでまとめられます。最初はなかなか気づかないときもありますが、意識してまとめられるものを探せば意外と簡単にプログラムの高速化ができます。

下にいくつかサンプルを示します。最初は高速化する前の式を表示しますが、どう変形すれば高速化できるかぜひ自分で考えてみてください。「回答」ボタンを押すと、回答例が表示されますので、どうぞご参考にしてください。

■ サンプル

○ Sample 1: 基本

- C
- FORTRAN

○ Sample 2: 応用1

- C
- FORTRAN

○ Sample 3: 応用2

- C
- FORTRAN

○ Sample 4: テイラー展開

- C
- FORTRAN



はじめに

演算数を減らす

メモリジャンプを減らす

高性能のアルゴリズム

その他



3 5 2 9 4 5