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 sliceFuncSTRING= '00000000000000000000000000000000000000000';
obj.sliceFunc= function(number,pad) {"use strict";
var my_string = '' + number;
return sliceFuncSTRING.slice(my_string.length,pad) + my_string;
};
obj.padNumberLoo2= 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.concatFunc2= function(number, length) {"use strict";
var my_string='';
for (var i=(number+'').length; i<length; ++i) {
my_string+= '0';
}
return my_string + number;
};
obj.concatFunc3= function(number, length) {"use strict";
number+='';
var my_string='';
for (var i=number.length; i<length; ++i) {
my_string+= '0';
}
return my_string + number;
};
Number.prototype.pad= function(length){"use strict";
var my_string= ''+this;
for (var i= my_string.length,s=''; i<length; ++i) {
s+= '0';
}
return s + my_string;
};
String.pad=function(s,char,length){"use strict";
s = '' + s;
for (var to_add = length - s.length; to_add > 0; to_add -= 1) {
s = char + s;
}
return s;
}
String.prototype.pad=function(char,length){"use strict";
var s = this;
for (var to_add = length - s.length; to_add > 0; --to_add) {
s = char + s;
}
return s;
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Math |
| ready |
Array join |
| ready |
Loop concat |
| ready |
.slice() |
| ready |
loop2 concat |
| ready |
concat2 |
| ready |
Number.pad |
| ready |
concat3 |
| ready |
String padding |
| ready |
String padding2 |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.