割り算を避ける

高速化プログラミング   
トップ  >  演算数と高速化  > 割り算を避ける

割り算を避ける

■ 概要

基礎演算の中には一番重いのは割り算です。それはコンピューターだけではなく、われわれ人間にとってもいえることです。足し算や掛け算よりも割り算の方が断然難しい(面倒)という小学生時代の記憶がだれにも残っているはずです。割り算をするには足し算、引き算、掛け算の全部ができないといけません。コンピューターも割り算を計算するときは足し算、引き算、掛け算を複数回使用するのでかなり重い計算になります。

割り算をたくさん使うプログラムは必然的に遅くなります。そのようなプログラムを高速化するには割り算を極力避けるようにしなければなりません。しかしすべて割り算が避けられるとは限りません。割り算が避けられる典型的なパターンは分母が定数の場合です。例えばb=a/2でしたら、b=0.5*aと書き直せます。式で書くと、式(1)のようになります。

x / C = (1.0/C) * x                 ... 式(1)

ここにCは定数であり、(1.0/C)はあらかじめ数値として計算しておけます。式(1)のように書きなおすと、割り算が掛け算に変えられますので、計算が軽くなります。

そのほかに割り算が避けられるパターンがあります。それは下のサンプルを通じて紹介します。

■ サンプル

○ Sample 1: 基本

- C
- FORTRAN

○ Sample 2: 割り算をまとめる

- C
- FORTRAN

○ Sample 3: 多重割り算

- C
- FORTRAN

○ Sample 4: 割り算の和

- C
- FORTRAN



はじめに

演算数を減らす

メモリジャンプを減らす

高性能のアルゴリズム

その他



3 5 2 9 4 4