Browser Diet - jQuery.each vs. for loop

JavaScript performance comparison

Revision 16 of this test case created

Preparation code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script>
  var a = $('*').get(),
      $a = $('*'),
      e;

 $.fn.quickEach = (function() {
                var jq = jQuery([ 1 ]);
                return function(c) {
                        var i = -1, el, len = this.length;
                        try {
                                while (++i < len && (el = jq[0] = this[i]) && c.call(jq, i, el) !== false);
                        } catch (e) {
                                delete jq[0];
                                throw e;
                        }
                        delete jq[0];
                        return this;
                };
        }());
</script>
 

Preparation code output

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.each
$.each(a, function() { e = this; })
pending…
for loop
for (var i = 0, len = a.length; i < len; i++) { e = a[i]; }
pending…
for without caching
for (var i = 0; i < a.length; i++) { e = a[i]; }
pending…
alternative for loop
for (var i in a) { e = a[i]; }
pending…
reverse for
for (var i = a.length; i--;) { e = a[i]; }
pending…
while reverse
var i = a.length;
while(i){ e = a[--i] }
pending…
null check
for (var i = 0; e = a[i]; i++) { }
pending…
quckEach
$a.quickEach(function() { e = this; })
pending…
reverse for loop
for (var i = 0, len = a.length; i = len; i--) { e = a[i]; }
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