ソフトウェアエンジニア現役続行

雑多なことを綴ります

演算の相対的コスト

演算の相対的なコストについて以下にまとめました。 以前読んだC実践プログラミングからの情報です。

1000  printfとscanf
800   mallocとfree
500   三角関数(sin,cos,...)
100   浮動小数点数(すべての演算)
30   整数の除算
20   整数の乗算
10   関数呼び出し
6    単純な配列インデックス
5    シフト
5    加算/減算
2    ポインタ逆参照
1    ビット単位AND,OR,NOT
1    論理的AND,OR,NOT

数が小さいほど、その演算にかかるコストは小さくて済みます。

なので、ある整数を2倍したいときは、

a *= 2;

とするよりも、

a << 1;

とした方が低コストです。

1ビット左シフトするということは、その整数を2倍するということですから。

C実践プログラミングは大学生のときに先生に買わされた本でした。C言語の基本的なことが分かりやすく書かれてあり、C言語を初めたばかりの人にはとても良い本だと思います。