Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
graph or reduce
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
Browser:
Chrome 121
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
reduce
184834.0 Ops/sec
graph
1435623.0 Ops/sec
Tests:
reduce
let inputData = [ [1, 3], [2, 3], [3, 6], [5, 6], [5, 7], [4, 5], [4, 8], [4, 9], [9, 11], [14, 4], [13, 12], [12, 9], ]; const store = new Map(); let a = 3; let b= 8; const getParents = (unit) => { return inputData.reduce((sum, [parent, child]) => { if (unit === child) { sum.add(parent); } return sum; }, new Set()); }; const reduceParents = (parents1, unit = b) => { const isFam = store.get([...parents1, unit].join()); if (typeof isFam === 'boolean') { return isFam; } const parents = getParents(unit); const result = parents?.size ? [...parents1].some((parent) => parents.has(parent)) || [...parents].some((parent) => reduceParents(parents1, parent)) : false; store.set([...parents1, unit].join(), result); return result; }; const isFam = (unit = a) => { const parents = getParents(unit); return parents?.size ? reduceParents(parents) || [...parents].some((parent) => isFam(parent)) : false; }; const result = isFam(); return result;
graph
let inputData = [ [1, 3], [2, 3], [3, 6], [5, 6], [5, 7], [4, 5], [4, 8], [4, 9], [9, 11], [14, 4], [13, 12], [12, 9], ]; let a = 3; let b= 8; const graph = {}; inputData.forEach((pair) => { const [parent, child] = pair; if (!graph[child]) { graph[child] = []; } graph[child].push(parent); }); // Function for finding ancestors function findAncestors(node, ancestors) { if (graph[node]) { graph[node].forEach((parent) => { ancestors.push(parent); findAncestors(parent, ancestors); }); } } // Find ancestors for both individuals const ancestorsA = []; const ancestorsB = []; findAncestors(a, ancestorsA); findAncestors(b, ancestorsB); // Check for common ancestors const commonAncestors = ancestorsA.filter((x) => ancestorsB.includes(x)); return commonAncestors.length > 0;