Math.floor vs Math.round vs parseInt vs Bitwise vs Tilde (v69)

Revision 69 of this benchmark created on


Description

Rounding in all form possible

Setup

var round = Math.round;
    var floor = Math.floor;
    var len = 100000;
    var values = [];
    while (len--) {
      values.push([Math.random() * len + 1, Math.random() * len + 1, Math.random() * len + 1]);
    }
    var index;
    var results = 0;

Teardown


    results = 0;
  

Test runner

Ready to run.

Testing in
TestOps/sec
Math.round
index = Math.floor(Math.random() * 100000);
results += Math.round(values[index][0] / values[index][1]);
results += Math.round(values[index][1] / values[index][2]);
results += Math.round(values[index][2] / values[index][0]);
ready
Math.round.digits
index = Math.floor(Math.random() * 100000);
results += Math.round(values[index][0] / values[index][1] * 10000) / 10000;
results += Math.round(values[index][1] / values[index][2] * 10000) / 10000;
results += Math.round(values[index][2] / values[index][0] * 10000) / 10000;
ready
parseInt
index = Math.floor(Math.random() * 100000);
results += parseInt(values[index][0] / values[index][1]);
results += parseInt(values[index][1] / values[index][2]);
results += parseInt(values[index][2] / values[index][0]);
ready
Bitwise |
index = Math.floor(Math.random() * 100000);
results += values[index][0] / values[index][1] | 0;
results += values[index][1] / values[index][2] | 0;
results += values[index][2] / values[index][0] | 0;
ready
Bitwise
index = Math.floor(Math.random() * 100000);
results += values[index][0] / values[index][1] >> 0;
results += values[index][1] / values[index][2] >> 0;
results += values[index][2] / values[index][0] >> 0;
ready
Tilde
index = Math.floor(Math.random() * 100000);
results += ~~ (values[index][0] / values[index][1]);
results += ~~ (values[index][1] / values[index][2]);
results += ~~ (values[index][2] / values[index][0]);
ready
Fast round
index = Math.floor(Math.random() * 100000);
results += round(values[index][0] / values[index][1]);
results += round(values[index][1] / values[index][2]);
results += round(values[index][2] / values[index][0]);
ready
Fast floor
index = Math.floor(Math.random() * 100000);
results += floor(values[index][0] / values[index][1]);
results += floor(values[index][1] / values[index][2]);
results += floor(values[index][2] / values[index][0]);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.