Exclusion test (v3)

Revision 3 of this benchmark created on


Description

Changes:

  • Drop jQuery tests as they are clearly slower.
  • Add tests that optimize the for loop (reverse).
  • Add test that stores excludeMe[i] for reuse (slightly slower!).
  • Add test using native Array.some() and Array.indexOf().

Setup

var excludeMe = ["in west", "philadelphia", "born and", "raised"];
    var needsExclusions = ["philadelphia", "raised"];
    
    var someFlag = true;
    var hasArraySome = typeof Array.prototype.some === 'function';

Test runner

Ready to run.

Testing in
TestOps/sec
for loop / Array.indexOf
for (var i = 0, len = excludeMe.length; i < len; i++) {
    if (needsExclusions.indexOf(excludeMe[i]) !== -1) {
        someFlag = false;
        break;
    }
}
ready
fast for loop / Array.indexOf
for (var i = excludeMe.length; i--; ) {
    if (needsExclusions.indexOf(excludeMe[i]) !== -1) {
        someFlag = false;
        break;
    }
}
ready
for loop / while loop
for (var i = 0, len = excludeMe.length; i < len; i++) {
    var length = needsExclusions.length;
    while (length-- && needsExclusions[length] !== excludeMe[i]) {}
    if (length >= 0) {
        someFlag = false;
        break;
    }
}
ready
fast for loop / while loop
for (var i = excludeMe.length; i--; ) {
    var len = needsExclusions.length;
    while (len-- && needsExclusions[len] !== excludeMe[i]) {}
    if (len >= 0) {
        someFlag = false;
        break;
    }
}
ready
fast for loop / while loop / local var
for (var i = excludeMe.length; i--; ) {
    var len = needsExclusions.length,
        exclude = excludeMe[i];
    while (len-- && needsExclusions[len] !== exclude) {}
    if (len >= 0) {
        someFlag = false;
        break;
    }
}
ready
Array.some / Array.indexOf
someFlag = hasArraySome && excludeMe.some(function (exclude) {
    return needsExclusions.indexOf(exclude) !== -1;
});
ready

Revisions

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