Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Intersection of multiple arrays | Lodash _.intersection() vs various custom optimized methods
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36
Browser:
Chrome 129
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Lodash _.intersection()
8922.4 Ops/sec
Custom optimized function 1 (Best)
10882.7 Ops/sec
Custom optimized function 2
4526.0 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
var arr1 = []; var arr2 = []; var arr3 = []; var arr4 = []; for (i = 0; i < 1000; i++) { arr1.push(getRandom()); arr2.push(getRandom()); arr3.push(getRandom()); arr4.push(getRandom()); } function getRandom() { const minimum = 1; const maximum = 1000; var randomnumber = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; return randomnumber; }
Tests:
Lodash _.intersection()
const results = new Set(_.intersection(arr1, arr2, arr3, arr4));
Custom optimized function 1 (Best)
function intersectMultipleArrays(...arrays) { if (arrays.length === 0) return new Set(); // Sort arrays by length to optimize operations arrays.sort((a, b) => a.length - b.length); // Start with the smallest array as the base intersection set let intersection = new Set(arrays[0]); // Iterate over the remaining arrays and filter the intersection for (let i = 1; i < arrays.length; i++) { intersection = new Set(arrays[i].filter(item => intersection.has(item))); // Early exit if intersection is empty if (intersection.size === 0) return new Set(); } // Return the final Set return intersection; } const results = intersectMultipleArrays(arr1, arr2, arr3, arr4);
Custom optimized function 2
const results = new Set( [arr1, arr2, arr3, arr4] .sort((a, b) => b.length - a.length) .reduce((a, b) => a.filter(aValue => b.includes(aValue))) );