startswith

JavaScript performance comparison

Revision 6 of this test case created by Eddy

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  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;
  }

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
indexOf
var a = (s1.indexOf('ok'));
var b = (s2.indexOf('ok'));
var c = (s3.indexOf('ok'));
pending…
custom
var a = (startsWith(s1, 'ok'));
var b = (startsWith(s2, 'ok'))
var c = (startsWith(s3, 'ok'));
pending…
lastIndexOf
var a = (s1.lastIndexOf('ok', 0));
var b = (s2.lastIndexOf('ok', 0));
var c = (s3.lastIndexOf('ok', 0));
pending…
startsWith2
var a = startsWith2(s1, 'ok');
var b = startsWith2(s2, 'ok');
var c = startsWith2(s3, 'ok');
pending…
startsWith2a
var a = startsWith2a(s1, 'ok');
var b = startsWith2a(s2, 'ok');
var c = startsWith2a(s3, 'ok');
pending…
startsWith3
var a = startsWith3(s1, 'ok');
var b = startsWith3(s2, 'ok');
var c = startsWith3(s3, 'ok');
pending…

Compare results of other browsers

Revisions

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

0 Comments