Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Spread vs if/else vs switch/break
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0
Browser:
Firefox 135
Operating system:
Linux
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Switch + spread
3655993.8 Ops/sec
if/else
6657020.5 Ops/sec
Switch + break
9376298.0 Ops/sec
Script Preparation code:
var filters = [{ name: 'operation', value: 'some value' }, { name: 'process', value: 'some value' }, { name: 'notUsed', value: 'slkjrklwejr' }, { name: 'position', value: '2' }, { name: 'multiChoise', value: [{ value: 'FOO' }, { value: 'BAR' }] }, ];
Tests:
Switch + spread
const query = filters.reduce((res, { name, value }) => { switch (name) { case 'position': return { ...res, position: Number(value), }; case 'operation': case 'process': return { ...res, [name]: value, }; case 'multiChoise': return { ...res, multiChoise: value.map(({ value }) => value), }; default: return res; } }, {});
if/else
const strings = ['operation', 'process']; const query = filters.reduce((res, { name, value }) => { if (name === 'position') { res.position = Number(value); } else if (name === 'multiChoise') { res.multiChoise = value.map(({ value }) => value); } else if (strings.includes(name)) { res[name] = value; } return res; }, {});
Switch + break
const query = filters.reduce((res, { name, value }) => { switch (name) { case 'position': res.position = Number(value); break case 'operation': case 'process': res[name] = value; break; case 'multiChoise': res.multiChoise = value.map(({ value }) => value); break; } return res; }, {});