javascript-string-pad-perf
by shyamh
HTML
Open a javascript console to see the run output</p>
<input type=button id="goBtn" value="Run Performance" />
<input type=button id="testBtn" value="Test Correctness" />
JavaScript
var t = new Date(),
i = 0,
N = 1000000,
str = '123',
pad = '0',
prePadded = '000000000000000000000000000000', // 30 long pre-padded string
length = 30;
// prePadded = '00000', // 5 long pre-padded string
// length = 5;
function padString1(len, pad, str, leftPadded) {
if (str == undefined) return Array(len - 1).join(pad);
if (leftPadded) {
return Array(len + 1 - str.length).join(pad) + str;
} else {
return str + Array(len + 1 - str.toString().length).join(pad);
}
}
function padString2(len, pad, str, leftPadded) {
if (str == undefined) str = ''
if (leftPadded) {
while (str.length < length) str = pad + str;
} else {
while (str.length < length) str = str + pad;
}
return str;
}
function padString3(pad, str, leftPadded) {
if (str == undefined) return pad;
if (leftPadded) {
return (pad + str).slice(-pad.length);
} else {
return (str + pad).substring(0, pad.length);
}
}
$('#goBtn').click(function () {
console.log("-- starting ...");
t = new Date();
for (i = 0; i < N; i++) {
padString1(length, pad, str, false);
padString1(length, pad, undefined, false);
padString1(length, pad, str, true);
}
console.log("padString1: " + ((new Date() - t) / 1000) + " ms");
t = new Date();
for (i = 0; i < N; i++) {
padString2(length, pad, str, false);
padString2(length, pad, undefined, false);
padString2(length, pad, str, true);
}
console.log("padString2: " + ((new Date() - t) / 1000) + " ms");
t = new Date();
for (i = 0; i < N; i++) {
padString3(prePadded, str, false);
padString3(prePadded, undefined, false);
padString3(prePadded, str, true);
}
console.log("padString3: " + ((new Date() - t) / 1000) + " ms");
});
$('#testBtn').click(function () {
console.log("-- testing correctness ...");
...