Benchmark Repeat String

Compares pure JavaScript to a hacky one

by Nikolay Kolev

HTML

<div>
  Mine = <span id="mine">...</span>
</div>
<div>
  Theirs = <span id="theirs">...</span>
</div>

JavaScript

function mine(pattern, count) {
  for (var result = '';;) {
    if (count & 1) {
      result += pattern;
    }
    if (count >>= 1) {
      pattern += pattern;
    } else {
      return result;
    }
  }
}

function theirs(pattern, count) {
  return new Array(count + 1).join(pattern);
}

function benchmark(id, fn) {
  var pattern = '*';
  var count = 1000;
  var iterations = 100000;

  var time = -Date.now();
  var checksum = 0;
  for (var i = 0; i < iterations; ++i) {
    checksum += fn(pattern, count).length;
  }
  time += Date.now();

  document.getElementById(id).innerText = time + ' ms, checksum = ' + checksum;
}

benchmark('mine', mine);
benchmark('theirs', theirs);