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?
(improved loop performance when at least one zero will be added) functions are placed into obj. to even the tests against the one that uses it as a method instead of a global function like the others.
/**
* 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.padNumberNaive = function(number, dummy) {"use strict";
if(number > 9){
return '' + number;
}
return '0' + number;
};
Ready to run.
Test | Ops/sec | |
---|---|---|
Math |
| ready |
Array join |
| ready |
Loop1 |
| ready |
.slice() |
| ready |
Loop2 |
| ready |
Concat1 |
| ready |
Concat2 |
| ready |
Simple/Naive |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.