演算の相対的コスト
演算の相対的なコストについて以下にまとめました。 以前読んだ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言語を初めたばかりの人にはとても良い本だと思います。