startswith (v29)

Revision 29 of this benchmark created on


Setup

// s1 is a match
  // s2 fails on first char
  // s3 fails on second char
  var s1 = "okodjdkdjdsllsdkddkdkdkkdkdloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremlorem";
  var s2 = "odjdkdjdsllsdkddkdkdkkdkdloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremok";
  var s3 = "dkjdkdjdsllsdkddkdkdkkdkdloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremloremlorem";
  
  /* ignore buggy implementation
  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 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;
  }
  
  function startsWith4(s, starter) {
    var prefixlen = starter.length;
    if (s.length < prefixlen)
      return false;
    var i = 0;
    while (i < prefixlen && s[i] === starter[i]) {
      ++i;
    }
    return (i === prefixlen);
  }
  
  function startsWith5(s, starter) {
    var i = starter.length;
    while (i--)
      if (s.charAt(i) !== starter.charAt(i))
        return false;
    return true;
  }
  
  // github.com/tunnckoCore
  function startsWithWhile(a, b) {
    var i = b.length;
    if (a.length < i) {
      return false;
    }
  
    while (i--) {
      if (a[i] !== b[i]) {
        return false;
      }
    }
  
    return true;
  }

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
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
startsWith3
var a = startsWith3(s1, 'ok');
var b = startsWith3(s2, 'ok');
var c = startsWith3(s3, 'ok');
ready
slice
var a = (s1.slice(0, 2) == 'ok');
var b = (s2.slice(0, 2) == 'ok');
var c = (s3.slice(0, 2) == 'ok');
ready
startsWith4
var a = startsWith4(s1, 'ok');
var b = startsWith4(s2, 'ok');
var c = startsWith4(s3, 'ok');
ready
startsWithWhile
var a = startsWithWhile(s1, 'ok');
var b = startsWithWhile(s2, 'ok');
var c = startsWithWhile(s3, 'ok');
ready
string.startsWith
var a = s1.startsWith('ok');
var b = s2.startsWith('ok');
var c = s3.startsWith('ok');
ready
string.substring
var a = s1.substring(0, 2) === 'ok';
var b = s2.substring(0, 2) === 'ok';
var c = s3.substring(0, 2) === 'ok';
ready
startsWith5
var a = startsWith5(s1, 'ok');
var b = startsWith5(s2, 'ok');
var c = startsWith5(s3, 'ok');
ready

Revisions

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