Array.filter vs jQuery.filter vs custom Array.where vs inline filtering vs predefined Array.filter (v6)

Revision 6 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>

Setup

// Add array.where implementation
    Array.prototype.where = Array.prototype.where || function(predicate) {
      var results = [],
          len = this.length,
          i = 0;
    
      while(i < len) {
        var item = this[i++];    
        predicate(item, i) && results.push(item);    
      }
    
      return results;
    };
    
    // Generate test array
    window.array = (function() {
      var arr = [];
      for (var i = 0; i < 100; ++i) {
        arr.push(i);
      }
    
      return arr;
    }());
    
    //save instance of jQuery array
    window.jqArray = jQuery(array);
    
    
    function filterMethod(el) {
      return el % 2 === 0;
    };

Test runner

Ready to run.

Testing in
TestOps/sec
Array.filter
array.filter(function(el) {
  return el % 2 === 0;
});
ready
jQuery.filter
jQuery(array).filter(function(n, el) {
  return el % 2 === 0;
});
ready
Array.where
array.where(function(el) {
  return el % 2 === 0;
});
ready
jQuery.filter (saved instance of jQuery(array) )
jqArray.filter(function(n, el) {
  return el % 2 === 0;
});
ready
inline filtering
var ret = [];
for (var i=0,l=array.length;i<l;i++) {
  var item = array[i];
  if (item % 2 === 0) ret.push(item);
}
return ret;
ready
inline filtering w/o item var
var ret = [];
for (var i=0,l=array.length;i<l;i++) {
  if (array[i] % 2 === 0) ret.push(array[i]);
}
return ret;
ready
predefined Array.filter
array.filter(filterMethod);
ready

Revisions

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