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="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div id="root"></div>
<script>
// fallback for older browsers
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(item) {
var len = this.length >>> 0;
for (var i = 0; i < len; i++) {
if (this[i] === item) {
return i;
}
}
return -1;
};
}
// array version
var data = (function() {
var elements = [];
var storage = [];
return function(el, key, value) {
var i = elements.indexOf(el);
if (typeof value != "undefined") {
if (i == -1) {
i = elements.length;
elements[i] = el;
storage[i] = {};
}
storage[i][key] = value; // set
} else if (storage[i]) {
return storage[i][key]; // get
}
};
})();
// hash table version
var data2 = (function() {
var storage = {};
var counter = 1;
return function(el, key, value) {
var uid = el.uniqueID || (el.uniqueID = counter++);
if (typeof value != "undefined") {
storage[uid] || (storage[uid] = {});
storage[uid][key] = value; // set
} else if (storage[uid]) {
return storage[uid][key]; // get
}
};
})();
////////////////////////////////////
// Create test page
var MAXDEPTH = 2;
var dummy = document.createElement("div");
var total = 0;
function createBranch(root, depth) {
depth = depth ? depth + 1 : 1;
for (var i = 0; i < 10; i++) {
total++;
var el = dummy.cloneNode(false);
el.id = "elem" + total;
root.appendChild(el);
if (depth < MAXDEPTH) {
createBranch(el, depth);
}
}
}
////////////////////////////////////
// Initialize tests
var root = document.getElementById("root");
createBranch(root);
var elems = root.getElementsByTagName("div");
var len = elems.length;
var ret;
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
jQuery |
| ready |
custom |
| ready |
custom2 |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.