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
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.6.1/lodash.min.js"></script>
(function($) {
// Create a placeholder jQuery object with a length of 1. The single item
// is completely arbitrary and will be replaced.
var jq = $([1]);
$.fn.each2 = function( fn ) {
var i = -1;
while (
// Set both the first element AND context property of the placeholder
// jQuery object to the DOM element. When i has been incremented past the
// end, this[++i] will return undefined and abort the while loop.
( jq.context = jq[0] = this[++i] )
// Invoke the callback function in the context of the DOM element,
// passing both the index and the placeholder jQuery object in. Like
// .each, if the callback returns `false`, abort the while loop.
&& fn.call( jq[0], i, jq ) !== false
) {}
// Return the initial jQuery object for chainability.
return this;
};
})(jQuery);
var sum = 0;
var arr = [];
var myFunc = function() {
sum += 1;
}
for (var i = 0; i < 100000; i++) {
arr.push(i)
}
Ready to run.
Test | Ops/sec | |
---|---|---|
angular foreach |
| ready |
underscore foreach |
| ready |
for loop |
| ready |
for loop reverse |
| ready |
for loop with caching |
| ready |
browser forEach |
| ready |
jQuery .each |
| ready |
native for with caching and revered |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.