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

Revision 33 of this benchmark created on


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

Revisions

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