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

Revision 95 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.floor
index = Math.floor(Math.random() * 100000);
results += Math.floor(values[index][0] / values[index][1]);
results += Math.floor(values[index][1] / values[index][2]);
results += Math.floor(values[index][2] / values[index][0]);
ready
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
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
String floor

index = Math.floor(Math.random() * 100000);
results += Number((values[index][0] / values[index][1]).toString().split(".")[0]); //:)
results += Number((values[index][1] / values[index][2]).toString().split(".")[0])
results += Number((values[index][2] / values[index][0]).toString().split(".")[0])
 
ready

Revisions

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