Left zero filling (v8)

Revision 8 of this benchmark created by MaxArt on


Preparation HTML

<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

Ready to run.

Testing in
TestOps/sec
Array.join 1e20
arrayJoin(Math.random() * 1e20 | 0)
ready
binary loop 1e5
binaryLoop(Math.random() * 1e5 | 0)
ready
binary loop 1e20
binaryLoop(Math.random() * 1e20 | 0)
ready
while loop 1e5
whileLoop(Math.random() * 1e5 | 0)
ready
Array.join 1e5
arrayJoin(Math.random() * 1e5 | 0)
ready
while loop 1e20
whileLoop(Math.random() * 1e20 | 0)
ready

Revisions

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