jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
There are lots of ways to zero-pad a number in JavaScript. Which is fastest?
/**
* Pad a number with leading zeros to "pad" places:
*
* @param number: The number to pad
* @param pad: The maximum number of leading zeros
*/
var obj={};
obj.padNumberMath = function(number, pad) {"use strict";
var N = Math.pow(10, pad);
return number < N ? ("" + (N + number)).slice(1) : "" + number;
};
obj.padNumberArray = function(n, len) {"use strict";
return (new Array(len + 1).join('0') + n).slice(-len);
};
obj.padNumberLoop = function(number, length) {"use strict";
var my_string = '' + number;
for (var to_add = length - my_string.length; to_add > 0; to_add -= 1){
my_string = '0' + my_string;
}
return my_string;
};
const sliceZeros = '00000000000000000000000000000000000000000';
obj.padNumberSlice = function(number,pad) {"use strict";
var my_string = '' + number;
return sliceZeros.slice(my_string.length,pad) + my_string;
};
obj.padNumberLoop2 = function(number, length) {"use strict";
var my_string = ''+number;
for (var to_add = length - my_string.length; to_add > 0; --to_add) {
my_string = '0' + my_string;
}
return my_string;
};
obj.padNumberConcat = function(number, length) {"use strict";
var my_string = '';
for (var i=(number+'').length; i<length; ++i) {
my_string += '0';
}
return my_string + number;
};
obj.padNumberConcat2 = function(number, length) {"use strict";
number+='';
var my_string='';
for (var i=number.length; i<length; ++i) {
my_string+= '0';
}
return my_string + number;
};
obj.padImpRec = function(num,char,size){"use strict";
var pad = "", str = "" + num, len = str.length;
function _padImpRec(){
return len + pad.length >= size ? pad + str : (pad += char, _padImpRec())
}
return _padImpRec()
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Math |
| ready |
Array join |
| ready |
Loop1 |
| ready |
.slice() |
| ready |
Loop2 |
| ready |
Concat1 |
| ready |
Concat2 |
| ready |
Imperative+Recursive |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.