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
to check the performance of regex over a native method Number.toLocaleString() and an array based implementation for number formatting in JavaScript.
var number = 4343005353.53;
function formatNumber(num) {
var decimalPart = '';
num = num.toString();
if (num.indexOf('.') != -1) {
decimalPart = '.' + num.split('.')[1];
num = parseInt(num.split('.')[0]);
}
var array = num.toString().split('');
var index = -3;
while (array.length + index > 0) {
array.splice(index, 0, ',');
index -= 4;
}
return array.join('') + decimalPart;
};
function formatNumberRgx(num) {
var parts = num.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
};
function formatWithRemainders(value) {
var original = value;
var isNegative = value < 0;
var absValue = Math.abs(value);
var floorValue = Math.floor(absValue);
var v = floorValue;
if (v == 0) return "0";
var formatted = "";
while (v > 0) {
if (formatted.length > 0) {
formatted = "," + formatted;
}
var remainder = (v % 1000) + "";
v = Math.floor(v / 1000);
if (v > 0) {
for (var i = remainder.length; i < 3; i++) {
remainder = "0" + remainder;
}
}
formatted = remainder + formatted;
}
if (absValue !== floorValue) {
formatted += "." + original.toString().split('.')[1];
}
if (isNegative) {
formatted = "-" + formatted;
}
return formatted;
}
Ready to run.
Test | Ops/sec | |
---|---|---|
without regex |
| ready |
with regex |
| ready |
with locale string |
| ready |
using remainders |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.