JavaScript bitwise NOT (function calls) vs Math.floor() (v23)

Revision 23 of this benchmark created on


Setup

var numbers = [];
  
  //generate amount random numbers
  for (var i = 0; i < 100000; i++) {
    numbers[numbers.length] = Math.random() * 100000;
  }
  
  function floorBN(n) {
   return ~~n
  }
  
  function floorBO(n) {
   return  n | 0
  }
  
  function floorS(n) {
   return  n >> 0
  }

Test runner

Ready to run.

Testing in
TestOps/sec
Math.floor()
var test;
for (var i = 0; i < 10000; i++) {
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
  test = Math.floor(numbers[i]);
}
ready
bitwise NOT
var test;
for (var i = 0; i < 10000; i++) { 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]); 
  test = floorBN(numbers[i]);
}
ready
Bitwise OR
var test;
for (var i = 0; i < 10000; i++) { 
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]);  
  test = floorBO(numbers[i]); 
}
ready
Bitwise SHIFT
var test;
for (var i = 0; i < 10000; i++) { 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]); 
  test = floorS(numbers[i]);
}
ready

Revisions

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