leftpad (v8)

Revision 8 of this benchmark created by Eamon Nerbonne on


Setup

function leftpad(str, len, ch) {
    str = String(str);
  
    var i = -1;
  
    if (!ch && ch !== 0) ch = ' ';
  
    len = len - str.length;
  
    while (++i < len) {
      str = ch + str;
    }
  
    return str;
  }
  
  function leftpad2(str, len, ch) {
    if (!ch && ch !== 0) ch = ' ';
    return ('' + ch).repeat(Math.max(0, len - str.length)) + str
  }
  
  function leftpad3(str, len, ch) {
    str = ''+str;
  
    if (!ch && ch !== 0) ch = ' ';
    return new Array(Math.max(0, len - str.length + 1)).join(ch) + str;
  }
  
  function leftpad4(str, len, ch) {
      if (!ch && ch !== 0) ch = ' ';
      var cnt = len - str.length;
      var pad = '';
      while (1) {
        if (cnt & 1) pad += ch;
        cnt >>= 1
        if (cnt) ch += ch;
        else break;
      }
      return pad + str;
    }
  
  function leftpad5(str, len, ch) {
    if (!ch && ch !== 0) ch = ' ';
    var pad = '';
    for(len -= str.length; len>0; --len) pad = pad + ch;
    return pad + str;
  }

Test runner

Ready to run.

Testing in
TestOps/sec
while loop
leftpad('hello world', 60, 'x')
ready
repeat and slice
leftpad2('hello world', 60, 'x')
ready
array join
leftpad3('hello world', 60, 'x')
ready
haozishu
leftpad4('hello world', 60, 'x')
ready
loop pad build
leftpad5('hello world', 60, 'x')
ready

Revisions

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