普段の仕事ではビット演算を使用する機会が無い。Flash 8 以降で凝った画像処理をするには必要なのだが、それはさておき……。身近な所では、偶奇を判定する方法にビット演算が使えそうだ。
通常「2 で割った余りが 0 ではない」数字を奇数と定義する。
function isOddA(n) { return ((n % 2) != 0); }
ビットで考えると「1 との論理積が 1 となる」数字が奇数なので
function isOddB(n) { return ((n & 1) == 1); }
このように書ける。通常、ビット演算は高速だと言われるが、スクリプト言語でも速くなるのかを実験してみる。以下は、かなりいい加減なベンチマーク関数である。
function benchMark(algorism) { var time = (new Date()).getTime(); for (var i = 0; i < 30000; i++) { var hoge = algorism(1); } document.write((new Date()).getTime() - time); }
この関数に各アルゴリズムを数回通したところ、以下のような結果が得られた。
benchMark(isOddA); //730前後 benchMark(isOddB); //700前後
僅かにだが、ビット演算の方が速い。