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
This edit changes
function uniq_filter_has_op(a) {
var seen = {};
return a.filter(function(item) {
return seen.hasOwnProperty(item) ? false : (seen[item] = true);
});
}
function uniq_filter_in(a) {
var seen = {};
return a.filter(function(item) {
return seen[item] === 1 ? 0 : (seen[item] = 1);
});
}
function uniq_loop_has_op(a) {
var seen = {};
var out = [];
var len = a.length;
for (var i = 0; i < len; i++) {
var item = a[i];
if (!seen.hasOwnProperty(item)) {
seen[item] = true;
out.push(item);
}
}
return out;
}
function uniq_loop_in(a) {
var seen = {};
var out = [];
var len = a.length;
for (var i = 0; i < len; i++) {
var item = a[i];
if (seen[item] !== 1) {
seen[item] = 1;
out.push(item);
}
}
return out;
}
function uniq_loop_in_nopush(a) {
var seen = {};
var out = [];
var len = a.length;
var j = 0;
for (var i = 0; i < len; i++) {
var item = a[i];
if (seen[item] !== 1) {
seen[item] = 1;
out[j++] = item;
}
}
return out;
}
function es6_set(a) {
return new Set(a);
}
function uniq_loop_in_nopush_reverse_indexOf(a) {
var item, i = a.length,
out = [],
j = 0;
while (--i) {
item = a[i];
if (a.indexOf(item) === i) {
out[j++] = item;
}
}
out[j++] = a[0];
return out.reverse();
}
//
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
a = a.concat(a, a);
a = a.concat(a, a);
a = a.concat(a, a);
Ready to run.
Test | Ops/sec | |
---|---|---|
uniq_filter_has_op |
| ready |
uniq_filter_in |
| ready |
uniq_loop_has_op |
| ready |
uniq_loop_in |
| ready |
uniq_loop_in_nopush |
| ready |
ES6 Set |
| ready |
uniq_loop_in_nopush_reverse_indexOf |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.