Left zero filling

JavaScript performance comparison

Revision 8 of this test case created by MaxArt

Preparation code

<script>
  function whileLoop(number, targetLength) {
   var output = number + '';
   while (output.length < targetLength) {
    output = '0' + output;
   }
   return output;
  };
  
  function arrayJoin(number, targetLength) {
   if ((number = number + "").length < targetLength) {
    return new Array((++targetLength) - number.length).join("0") + number;
   } else {
    return number;
   }
  }

  function binaryLoop(number, targetLength) {
   // See also
   // jsperf(dot)com/ultimate-string-repetition
   if (Math.ceil(Math.log(number) / Math.LN10) < targetLength) {
     var pad = "", add = "0", len = targetLength;
     for (; len; len >>= 1, add += add)
      if (len & 1) pad += add;
     return (pad + number).slice(-targetLength);
   } else return number + "";
  }
</script>
    

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Array.join 1e20
arrayJoin(Math.random() * 1e20 | 0)
pending…
binary loop 1e5
binaryLoop(Math.random() * 1e5 | 0)
pending…
binary loop 1e20
binaryLoop(Math.random() * 1e20 | 0)
pending…
while loop 1e5
whileLoop(Math.random() * 1e5 | 0)
pending…
Array.join 1e5
arrayJoin(Math.random() * 1e5 | 0)
pending…
while loop 1e20
whileLoop(Math.random() * 1e20 | 0)
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL.

0 Comments