JavaScriptの調べ物をしていると、Mathは遅い、とよく目にします。
多くの人たちが言うんだから遅いんだろう。
んじゃ、速くするにはどうすればいいの?
これもよく目にします。ビット演算。
wikipediaによると
ビット演算(ビットえんざん)とは、ひとつあるいはふたつのビットパターンまたは二進数を個々のビットの列として操作することである。
難しいことはまあ置いておいて以下の3つをビット演算で置き換えてみます。
小数点以下切捨て
Math.floor
小数点以下四捨五入
Math.round
小数点以下切上げ
Math.ceil
var num = 3.65; console.log( Math.floor(num) ); //-> 3 console.log( Math.round(num) ); //-> 4 console.log( Math.ceil(num) ); //-> 4
次に、それぞれをビット演算で
var num = 3.65; /* Math.floor */ console.log( num | 0 ); //-> 3 // 他にこんな書き方もあります。 console.log( num >> 0 ); //-> 3 console.log( ~~num ); //-> 3 /* Math.floor */ console.log( 0.5 + num | 0 ); //-> 4 /* Math.ceil */ console.log( -~num ); //-> 4
きっと速くなっているんでしょう。僕のアレぐらい。
あと、処理する値がマイナスだとMathの値とビット演算の値が微妙に違うので、使うときは要注意です。が、覚えておくとビット役にたつと思います。