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>
var states = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Dakota", "North Carolina", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming", "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Dakota", "North Carolina", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"],
results;
var lastIndexOf = Array.prototype.lastIndexOf ?
function(a, val, fromIndex) {
return fromIndex || fromIndex === 0 ? a.lastIndexOf(val, fromIndex) : a.lastIndexOf(val);
} : function(a, val, fromIndex) {
var len = a.length,
i = len - 1;
if (fromIndex || fromIndex === 0) {
i = Math.min(fromIndex < 0 ? len + fromIndex : fromIndex, len);
}
if (i > -1 && len > 0) {
for (; i > -1; --i) {
if (a[i] === val) {
return i;
}
}
}
return -1;
};
function unique_yui320(a) {
var b = a.slice(),
i = 0,
n = -1,
item = null;
while (i < b.length) {
item = b[i];
while ((n = lastIndexOf(b, item)) !== i) {
b.splice(n, 1);
}
i += 1;
}
return b;
}
function unique_yuinew(a) {
var i = 0,
len = a.length,
results = [],
item, j;
for (; i < len; ++i) {
item = a[i];
// This loop iterates over the results array in reverse order and stops
// if it finds an item that matches the current input array item (a
// dupe). If it makes it all the way through without finding a dupe, it
// pushes the current input item onto the end of the results array and
// stops iterating.
for (j = results.length; j > -1 || (results.push(item) && 0); --j) {
if (item === results[j]) {
break;
}
}
}
return results;
}
function unique_yuinew2(a) {
var i = 0,
len = a.length,
results = [],
item, j;
for (; i < len; ++i) {
item = a[i];
for (j = results.length; j > -1; --j) {
if (item === results[j]) {
break;
}
}
if (j === -1) {
results.push(item);
}
}
return results;
}
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
YUI 3.2.0 style |
| ready |
YUI 3.3.0+ style |
| ready |
YUI 3.3.0+ style (more readable) |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.