Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Mutable object reducer vs immutable object reducer
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/131.0.0.0 Safari/537.36
Browser:
Chrome 131
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Immutable reducer via spread operator
88921.1 Ops/sec
Mutable reducer via property assign
674065.9 Ops/sec
Script Preparation code:
var arr = [ { key: 'one', val: 1 }, { key: 'two', val: 2 }, { key: 'three', val: 3 }, { key: 'four', val: 4 }, { key: 'five', val: 5 }, { key: 'six', val: 6 }, { key: 'seven', val: 7 }, { key: 'eight', val: 8 }, { key: 'nine', val: 9 }, { key: 'ten', val: 10 }, { key: 'eleven', val: 11 }, { key: 'twelve', val: 12 }, { key: 'thirteen', val: 13 }, { key: 'fourteen', val: 14 }, { key: 'fifteen', val: 15 }, { key: 'sixteen', val: 16 }, { key: 'seventeen', val: 17 }, { key: 'eighteen', val: 18 }, { key: 'nineteen', val: 19 }, { key: 'twenty', val: 20 } ];
Tests:
Immutable reducer via spread operator
const reducer = (obj, pair) => ({...obj, [pair.key]: pair.val }); arr.reduce(reducer, {});
Mutable reducer via property assign
const reducer = (obj, pair) => { obj[pair.key] = pair.val; return obj; }; arr.reduce(reducer, {});