整数の四則演算(2)

シフト演算


// 382ms
for(var i = 0; i < n; i++) {
4 >> 1;
}

加算と同等。

除算


// 481ms
for(var i = 0; i < n; i++) {
4 / 2;
}

整数の範囲を外れてても同等。


// 473ms
for(var i = 0; i < n; i++) {
12345678900 / 3456789;
}

結果が64ビット整数の範囲を超えると遅くなる。


// 780ms
for(var i = 0; i < n; i++) {
12345678901234567890 / 1.33;
}

剰余

剰余のほうが除算より遅い。


// 627ms
for(var i = 0; i < n; i++) {
4 % 3;
}

商が大きくてもあまり変わらない。


// 592ms
for(var i = 0; i < n; i++) {
12345678901234567890 % 1.33;
}

剰余が64ビット整数の範囲を超えると遅い。


// 931ms
for(var i = 0; i < n; i++) {
12345678901234560890 % 12345678901234567890;
}

整数の商を求めるには、


// 917ms
for(var i = 0; i < n; i++) {
(4 - 4 % 3) / 3;
}

当然だが、これは非常に遅い。


// 1906ms
for(var i = 0; i < n; i++) {
Math.floor(4 / 3);
}