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

Revision 34 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;
    index = Math.floor(Math.random()*100000);

Teardown


    results = 0;
    index = Math.floor(Math.random()*100000);
  

Test runner

Ready to run.

Testing in
TestOps/sec
Math.floor
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
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
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 |
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
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
results += ~~(values[index][0] / values[index][1]);
results += ~~(values[index][1] / values[index][2]);
results += ~~(values[index][2] / values[index][0]);
ready
Fast round
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
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.