jQuery array intersect vs native v7

JavaScript performance comparison

Revision 7 of this test case created by Douglas Denhartog

Info

BACKGROUND: http://phrogz.net/JS/classes/ExtendingJavaScriptObjectsAndClasses.html

MODIFIED: http://stackoverflow.com/questions/1266402/whats-a-good-mathematical-sets-implementation-in-javascript

Preparation code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script>
Benchmark.prototype.setup = function() {
    var alpha = [1, 2, 3, 4, 5, 6],
        beta = [4, 5, 6, 7, 8, 9],
        result = [];
};
</script>

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
jQuery
$.arrayIntersect = function(a, b) {
  return $.grep(a, function(i) {
    return $.inArray(i, b) > -1;
  });
};

result = $.arrayIntersect(alpha, beta);
pending…
Native
function arrayIntersect(a, b) {
  return a.filter(function(i) {
    return b.indexOf(i) > -1;
  });
}

result = arrayIntersect(alpha, beta);
pending…
Native reduce
Array.prototype.intersect_safe = function(b) {
  var ai = 0,
      bi = 0;
  var result = new Array();

  while (ai < this.length && bi < b.length) {
    if (this[ai] < b[bi]) {
      ai++;
    } else if (this[ai] > b[bi]) {
      bi++;
    } else /* they're equal */
    {
      result.push(this[ai]);
      ai++;
      bi++;
    }
  }
  return result;
}
pending…
Object intersection
var myobject = new Object();

myobject.one = {
  'one': 10,
  'two': 20,
  'three': 30
};
myobject.two = {
  'three': 3,
  'four': 4,
  'five': 5
};

function intersect(s1, s2) {
  var i = new Array();
  for (var item in s1) {
    if (s1[item] && s2[item]) {
      i.push(item);
    }
  }
  return i;
}

result = intersect(myobject.one, myobject.two);
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. Here’s a list of current revisions for this page:

0 comments

Add a comment