array filter: jQuery.each vs jQuery.grep vs for loop (v11)

Revision 11 of this benchmark created by Richard Kraaijenhagen on


Description

Used inline function instead of function declaration, can't believe these test results.

Preparation HTML

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

Setup

var largeArray = ["element1", "element2", "element3", "element4", "element5", "element6", "element7", "element8", "element9", "element10", "element11", "element12", "element13", "element14", "element15", "element16", "element17", "element18", "element19", "element20", "element21", "element22", "element23", "element24", "element25", "element26", "element27", "element28", "element29", "element30", "element31", "element32", "element33", "element34", "element35", "element36", "element37", "element38", "element39", "element40", "element41", "element42", "element43", "element44", "element45", "element46", "element47", "element48", "element49", "element50", "element51", "element52", "element53", "element54", "element55", "element56", "element57", "element58", "element59", "element60", "element61", "element62", "element63", "element64", "element65", "element66", "element67", "element68", "element69", "element70", "element71", "element72", "element73", "element74", "element75", "element76", "element77", "element78", "element79", "element80", "element81", "element82", "element83", "element84", "element85", "element86", "element87", "element88", "element89", "element90", "element91", "element92", "element93", "element94", "element95", "element96", "element97", "element98", "element99", "element100"];

Test runner

Ready to run.

Testing in
TestOps/sec
jQuery.grep
var result = jQuery.grep(largeArray, function(element) {
  return (element === 'element10' || element === 'element90');
});
ready
Array.filter
var result = largeArray.filter(function(element) {
  return (element === 'element10' || element === 'element90');
});
ready
jQuery.each
var result = [],
  element;
jQuery.each(largeArray, function(index, value) {
  if (element === 'element10' || element === 'element90')
    result.push(element);
});
ready

Revisions

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