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>
function forLoopUnique(arr) {
const unique = new Set();
for(let x=0; x<arr.length; x++) {
const value = arr[x].value;
for(let y=0; y<value.length; y++) {
unique.add(value[y]);
}
}
return Array.from(unique);
}
function reducePush(arr) {
const flattened = arr.reduce((pre, curr) => {
pre.push(...curr.value);
return pre;
}, []);
return Array.from(new Set(flattened));
}
function reduceSpreadUnique(arr) {
return [...new Set(arr.reduce((acc, item) => [...acc, ...item.value], []))]
}
function mapUnique(arr) {
return Array.from(new Set(arr.map(item => item.value).flat(1)))
}
function map2Unique(arr) {
return [...new Set(arr.map(item => item.value).flat(1))]
}
</script>
const arr = [];
for(let i=0; i<10;i++){
arr.push({
value: new Array(15).fill(0).map((_, i)=> parseInt(i+Math.random()*1000))
})
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Reduce with spread |
| ready |
Map |
| ready |
map2Unique |
| ready |
forLoopUnique |
| ready |
reducePush |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.