jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
The quickEach
method will pass a non-unique jQuery
instance to the callback meaning that there will be no need to instantiate a fresh jQuery
instance on each iteration. Most of the slow-down inherent in jQuery’s native iterator method (each
) is the constant need to have access to jQuery’s methods, and so most developers see constructing multiple instances as no issue… A better approach would be quickEach
.
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
var a = $('<div/>').append(Array(100).join('<a></a>')).find('a');
jQuery.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;
};
}());
jQuery.fn.thisEach = function(f){//compact
var t = $([0]), i = -1, l = this.length, e;
while(
++i < l
&& (e = t[0] = this[i])
&& f.call(t, i, e) !== false
);
return this;
};
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
.each() |
| ready |
.quickEach() |
| ready |
.thisEach() |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.