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

Revision 36 of this benchmark created on


Description

Rounding in all form possible

Setup

var round = Math.round;
    var floor = Math.floor;
    var number_of_randoms = 10000;
    var len = number_of_randoms;
    var values = [];
    var shuffles = [];
    var index = 0;
    var results = 0;
    
    // Fill arrays
    while (len--) {
      values.push([
      Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1, Math.random() * number_of_randoms + 1]);
      shuffles.push(len);
    }
    len = number_of_randoms;
    
    // Shuffle "shuffles" array
    while (len--) {
      index = Math.floor(Math.random() * number_of_randoms);
      results = shuffles[len];
      shuffles[len] = shuffles[index];
      shuffles[index] = results;
    }
    results = 0;
    index = Math.floor(Math.random() * number_of_randoms);

Teardown


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

Test runner

Ready to run.

Testing in
TestOps/sec
Tilde
results += ~~ (values[index][0] / values[index][1]);
results += ~~ (values[index][1] / values[index][2]);
results += ~~ (values[index][2] / values[index][0]);
results += ~~ (values[index][3] / values[index][4]);
results += ~~ (values[index][3] / values[index][5]);
results += ~~ (values[index][5] / values[index][3]);
results += ~~ (values[index][6] / values[index][7]);
results += ~~ (values[index][7] / values[index][8]);
results += ~~ (values[index][8] / values[index][6]);
index = shuffles[index];
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]);
results += Math.round(values[index][3] / values[index][4]);
results += Math.round(values[index][3] / values[index][5]);
results += Math.round(values[index][5] / values[index][3]);
results += Math.round(values[index][6] / values[index][7]);
results += Math.round(values[index][7] / values[index][8]);
results += Math.round(values[index][8] / values[index][6]);
index = shuffles[index];
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]);
results += parseInt(values[index][3] / values[index][4]);
results += parseInt(values[index][3] / values[index][5]);
results += parseInt(values[index][5] / values[index][3]);
results += parseInt(values[index][6] / values[index][7]);
results += parseInt(values[index][7] / values[index][8]);
results += parseInt(values[index][8] / values[index][6]);
index = shuffles[index];
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;
results += values[index][3] / values[index][4] | 0;
results += values[index][3] / values[index][5] | 0;
results += values[index][5] / values[index][3] | 0;
results += values[index][6] / values[index][7] | 0;
results += values[index][7] / values[index][8] | 0;
results += values[index][8] / values[index][6] | 0;
index = shuffles[index];
ready
Bitwise Floor
results += (tmp = values[index][0] / values[index][1]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][1] / values[index][2]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][2] / values[index][0]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][3] / values[index][4]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][3] / values[index][5]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][5] / values[index][3]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][6] / values[index][7]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][7] / values[index][8]) + (tmp < 0 ? -1 : 0) >> 0;
results += (tmp = values[index][8] / values[index][6]) + (tmp < 0 ? -1 : 0) >> 0;
index = shuffles[index];
ready
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]);
results += Math.floor(values[index][3] / values[index][4]);
results += Math.floor(values[index][3] / values[index][5]);
results += Math.floor(values[index][5] / values[index][3]);
results += Math.floor(values[index][6] / values[index][7]);
results += Math.floor(values[index][7] / values[index][8]);
results += Math.floor(values[index][8] / values[index][6]);
index = shuffles[index];
ready
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]);
results += round(values[index][3] / values[index][4]);
results += round(values[index][3] / values[index][5]);
results += round(values[index][5] / values[index][3]);
results += round(values[index][6] / values[index][7]);
results += round(values[index][7] / values[index][8]);
results += round(values[index][8] / values[index][6]);
index = shuffles[index];
ready
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]);
results += floor(values[index][3] / values[index][4]);
results += floor(values[index][3] / values[index][5]);
results += floor(values[index][5] / values[index][3]);
results += floor(values[index][6] / values[index][7]);
results += floor(values[index][7] / values[index][8]);
results += floor(values[index][8] / values[index][6]);
index = shuffles[index];
ready

Revisions

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