startswith (v6)

Revision 6 of this benchmark created by Eddy on


Setup

var s1 = "okodjdkdjdsllsdkddkdkdkkdkdloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremlorem";
  var s2 = "odjdkdjdsllsdkddkdkdkkdkdloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremok";
  var s3 = "odjdkdjdsllsdkddkdkdkkdkdloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremlorem";
  
  function startsWith(s, starter) {
    // BUG: Will crash if s.length is less than starter.length.
    for (var i = 0, cur_c; i < starter.length; i++) {
      cur_c = starter[i];
      if (s[i] !== starter[i]) {
        return false;
      }
    }
    return true;
  }
  
  function startsWith2(str, prefix) {
    if (str.length < prefix.length)
      return false;
    for (var i = prefix.length - 1;
      (i >= 0) && (str[i] === prefix[i]); --i)
      continue;
    return i < 0;
  }
  
  function startsWith2a(str, prefix) {
    var i = prefix.length;
    if (str.length < i)
      return false;
    for (--i;
      (i >= 0) && (str[i] === prefix[i]); --i)
      continue;
    return i < 0;
  }
  
  function startsWith3(str, prefix) {
    var length = prefix.length;
    if (str.length < length)
      return false;
    for (var i = 0;
      (i < length) && (str[i] === prefix[i]); ++i)
      continue;
    return i === length;
  }

Test runner

Ready to run.

Testing in
TestOps/sec
indexOf
var a = (s1.indexOf('ok'));
var b = (s2.indexOf('ok'));
var c = (s3.indexOf('ok'));
ready
custom
var a = (startsWith(s1, 'ok'));
var b = (startsWith(s2, 'ok'))
var c = (startsWith(s3, 'ok'));
ready
lastIndexOf
var a = (s1.lastIndexOf('ok', 0));
var b = (s2.lastIndexOf('ok', 0));
var c = (s3.lastIndexOf('ok', 0));
ready
startsWith2
var a = startsWith2(s1, 'ok');
var b = startsWith2(s2, 'ok');
var c = startsWith2(s3, 'ok');
ready
startsWith2a
var a = startsWith2a(s1, 'ok');
var b = startsWith2a(s2, 'ok');
var c = startsWith2a(s3, 'ok');
ready
startsWith3
var a = startsWith3(s1, 'ok');
var b = startsWith3(s2, 'ok');
var c = startsWith3(s3, 'ok');
ready

Revisions

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