Math.floor vs shift 2
JavaScript performance comparison
Info
Compares Math.floor(x) to (x >> 0) as a way of converting to an int. They aren't completely equivalent; note that Math.floor(NaN) is NaN, while (NaN >> 0) is 0. Also added a if NaN function.
Preparation code
<script>
Benchmark.prototype.setup = function() {
function a(num) {return Math.floor(num);}
function b(num) {return +num>>0;}
function c(num) {num=+num;return num===num?num>>0:NaN;}
function d(num) {if(+num===NaN)return NaN;return num>>0;}
function e(num) {return Number(Number(num)>>0)}
function f(num) {return Number(num)===num?num===""?0:num>>0:NaN;}
};
</script>
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
Test  Ops/sec  

Math.floor 

pending… 
Shift 

pending… 
Shift with Ternary 

pending… 
Shift with If 

pending… 
Shift with Number Conversion 

pending… 
Shift with number coercion 2 

pending… 
Compare results of other browsers
Revisions
You can edit these tests or add even more tests to this page by appending /edit
to the URL. Here’s a list of current revisions for this page:
 Revision 1: published by Ted Hopp
 Revision 2: published
 Revision 3: published
 Revision 4: published
 Revision 5: published
0 comments