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
addCommas
is a simple script to add commas at every 3 digits from the right.
'Theirs' comes from mredkj.com, variations of which I have seen all over.
var addCommas1 = function(n) {
var s = n.toFixed(2).replace('.00', '');
var digits = (Math.floor(n) + '').length;
for (var i = 0, j = 0, mod = digits % 3; i < digits; i++) {
if (i == 0 || i % 3 != mod) {
continue;
}
s = s.substr(0, i + j) + ',' + s.substr(i + j);
j++;
}
return s;
};
var addCommas2 = function(nStr) {
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
var addCommas3 = function(str) {
str=String(str);
var dot=str.search("\\.");
var s=(dot!=-1?str.slice(0,dot):str),r="",last=(dot!=-1?str.slice(dot):"");
for (var i=s.length-1,j=1; i>-1; i--, j++) {
r=s.charAt(i)+r;
if (j%3==0&&i!=0) r=","+r;
}
return r+last;
}
var addCommas4 = (function () {
var rx = /(-?\d+)(\d{3})/;
return function (v) {
v += "";
while (rx.test(v)) {
v = v.replace(rx, '$1,$2');
}
return v;
};
}());
var addCommas5 = (function () {
var rx = /.{3}/g;
return function (v) {
var a = (v + "").split("."), s = a[0], u = a[1] ? "." + a[1] : "",
l = s.length, m = l%3, p = m ? s.substr(0, m) : "";
if (m) {
s = s.substr(m);
a = s.match(rx);
a.unshift(p);
return a.join(",") + u;
}
return s.match(rx).join(",") + u;
};
}());
var addCommas6 = (function () {
return function (str) {
var dot, s, r = "", last, i, j, l;
str += "";
dot = str.indexOf(".");
s = dot > -1 ? (last = str.slice(dot), str.slice(0, dot)) : (last = "", str);
l = s.length;
while (l > 0) {
l -= 3;
if (l > 0) {
r = s.substr(l) + r;
r = "," + r;
s = s.substr(0,l);
} else {
r = s + r;
}
}
return r + last;
}
}());
var addCommas7 = function(int) {
var resultDigits = [];
var intDigits = ("" + int).split("");
for (var i = intDigits.length, ctr = 0; i --> 0; ctr++) {
resultDigits.push(intDigits[i]);
if (ctr % 3 == 2 && i > 0) { resultDigits.push(","); }
}
return resultDigits.reverse().join("");
}
var addCommas8 = function(num) {
return (num+'').replace(/(\d)(?=(\d{3})+(\D.+)?$)/g, '$1,');
};
Ready to run.
Test | Ops/sec | |
---|---|---|
math |
| ready |
Theirs |
| ready |
another one |
| ready |
while regex |
| ready |
split join |
| ready |
while rebuild |
| ready |
plain loop |
| ready |
simpler regex |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.