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
Basically, if you're going to do $(this)
inside an .each
loop, you should consider using the jQuery each2 plugin instead, because it's specifically optimized for this extremely common use case!
For whatever reason, the modifications I made are even faster. The reason I even attempted to modify Ben's code was that the this
reference was not accurate in some instances.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<!-- the plugin -->
<script src="http://github.com/cowboy/jquery-misc/raw/master/jquery.ba-each2.js"></script>
<script>
jQuery.fn.extend({
each$: function(fn) {
var $elem = jQuery([1]);
try {
for (var i = 0; i < this.length; i++) {
if (fn.call(jQuery.context = $elem[0] = this[i], i, $elem) === false) { break; }
}
} finally {
delete $elem[0];
}
return this;
}
});
// Create a whole bunch of elements for iteration.
var elems = $('<div/>').append(Array(1000).join('<span/>')).children();
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
jQuery each2 plugin |
| ready |
jQuery core .each method |
| ready |
jQuery each$ plugin |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.