jQuery.fn.each
vs. quickEach
vs. each2
JavaScript performance comparison
Preparation code
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
var a = $('<div/>').append(Array(100).join('<a></a>')).find('a');
// My each2 plugin
(function($) {
var jq = $([]);
$.fn.each2 = function(fn) {
var i = -1;
while ((jq[0] = this[++i]) && fn.call(jq[0], i, jq) !== false) {}
return this;
};
})(jQuery);
(function($) {
var jq = $([]);
$.fn.each2_ref = function(fn) {
var i = -1,
elem;
while ((elem = jq[0] = this[++i]) && fn.call(elem, i, jq) !== false) {}
return this;
};
})(jQuery);
(function($) {
var jq = $([]);
$.fn.each2_len = function(fn) {
var i = -1,
len = this.length;
while (++i < len && (jq[0] = this[i]) && fn.call(jq[0], i, jq) !== false) {}
delete jq[0];
return this;
};
})(jQuery);
(function($) {
var jq = $([]);
$.fn.each2_ref_len = function(fn) {
var i = -1,
len = this.length,
elem;
while (++i < len && (elem = jq[0] = this[i]) && fn.call(elem, i, jq) !== false) {}
delete jq[0];
return this;
};
})(jQuery);
</script>
Preparation code output
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
Test | Ops/sec | |
---|---|---|
no elem ref, no explicit length comparison
|
|
pending… |
elem ref, no explicit length comparison
|
|
pending… |
no elem ref, explicit length comparison
|
|
pending… |
elem ref, explicit length comparison
|
|
pending… |
original
jQuery.fn.each (reference)
|
|
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.
- Revision 1: published James Padolsey
- Revision 2: published "Cowboy" Ben Alman
- Revision 3: published "Cowboy" Ben Alman
- Revision 9: published NilColor
- Revision 13: published
- Revision 14: published
- Revision 15: published
- Revision 18: published
- Revision 19: published
- Revision 22: published mhitza
- Revision 27: published
- Revision 28: published Test
- Revision 29: published
- Revision 30: published Erwan Legrand
- Revision 31: published
- Revision 32: published
- Revision 33: published
- Revision 34: published Vaibhav
- Revision 35: published
- Revision 36: published
- Revision 37: published
- Revision 38: published
- Revision 39: published
- Revision 41: published Jason
- Revision 42: published Dim
- Revision 47: published Andy Harman
- Revision 48: published Andy Harman and last updated
- Revision 50: published private_face
- Revision 54: published
- Revision 56: published David Seigle
- Revision 58: published Andy Harman
- Revision 59: published David Seigle
- Revision 63: published Andy Harman
- Revision 64: published roviury
- Revision 66: published Andy Harman
- Revision 69: published Andy Harman and last updated
- Revision 70: published
- Revision 71: published
- Revision 73: published
- Revision 74: published
- Revision 76: published
- Revision 77: published
- Revision 78: published Jeffrey
- Revision 79: published
- Revision 80: published
- Revision 81: published nod_ and last updated
- Revision 82: published Andy Harman
- Revision 83: published Kirill
- Revision 85: published
- Revision 87: published
- Revision 88: published
- Revision 89: published
- Revision 90: published
- Revision 91: published
- Revision 92: published
- Revision 93: published
- Revision 94: published Jerri Dick
- Revision 95: published
- Revision 96: published
- Revision 97: published
- Revision 98: published
- Revision 99: published agro
- Revision 100: published
- Revision 101: published
- Revision 102: published
- Revision 103: published
- Revision 104: published
- Revision 105: published Andy Harman
- Revision 106: published
- Revision 107: published Andy Harman
- Revision 108: published
- Revision 109: published
- Revision 110: published
0 Comments