Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Omit performance
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/120.0.0.0 Safari/537.36
Browser:
Chrome 120
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
Omit Inline
38.4 Ops/sec
Omit For
37.4 Ops/sec
Omit ForOf
38.1 Ops/sec
Omit Entries
17.7 Ops/sec
Omit Reduce
36.2 Ops/sec
Script Preparation code:
var arr = []; for (let i = 0; i < 100000; i++) { arr.push({ value: i, textValue: 'text-' + i + '' + Math.random(), createdAt: Math.random(), createdBy: Math.ceil(Math.random() + 10), updatedAt: i, updatedBy: Math.ceil(Math.random() + 10), }) } var omitInline = (obj, keys) => { const newObj = { ...obj }; if (keys.length > 4) { return keys.reduce((acc, key) => { delete acc[key]; return acc; }, newObj); } delete newObj[keys[0]]; if (keys.length === 1) return newObj; delete newObj[keys[1]]; if (keys.length === 2) return newObj; delete newObj[keys[2]]; if (keys.length === 3) return newObj; delete newObj[keys[3]]; return newObj; } var omitReduce = (obj, keys) => { const newObj = { ...obj }; if (keys.length > 3) { return keys.reduce((acc, key) => { delete acc[key]; return acc; }, newObj); } delete newObj[keys[0]]; if (keys.length === 1) return newObj; delete newObj[keys[1]]; if (keys.length === 2) return newObj; delete newObj[keys[2]]; return newObj; } var omitFor = (obj, keys) => { const newObj = { ...obj }; if (keys.length > 3) { for (let i = 0; i <= keys.length; i++) { delete newObj[keys[i]]; } return newObj } delete newObj[keys[0]]; if (keys.length === 1) return newObj; delete newObj[keys[1]]; if (keys.length === 2) return newObj; delete newObj[keys[2]]; return newObj; } var omitForOf = (obj, keys) => { const newObj = { ...obj }; if (keys.length > 3) { for (const key of keys) { delete newObj[key]; } return newObj } delete newObj[keys[0]]; if (keys.length === 1) return newObj; delete newObj[keys[1]]; if (keys.length === 2) return newObj; delete newObj[keys[2]]; return newObj; } var omitEntries = (obj, keys) => { const newObj = { ...obj }; if (keys.length > 3) { return Object.fromEntries(Object.entries(obj).filter(entry => !keys.includes(entry[0]))) } delete newObj[keys[0]]; if (keys.length === 1) return newObj; delete newObj[keys[1]]; if (keys.length === 2) return newObj; delete newObj[keys[2]]; return newObj; }
Tests:
Omit Inline
return arr.map(item => omitInline(item, ['createdAt', 'createdBy', 'updatedAt', 'updatedBy']))
Omit For
return arr.map(item => omitFor(item, ['createdAt', 'createdBy', 'updatedAt', 'updatedBy']))
Omit ForOf
return arr.map(item => omitForOf(item, ['createdAt', 'createdBy', 'updatedAt', 'updatedBy']))
Omit Entries
return arr.map(item => omitEntries(item, ['createdAt', 'createdBy', 'updatedAt', 'updatedBy']))
Omit Reduce
return arr.map(item => omitReduce(item, ['createdAt', 'createdBy', 'updatedAt', 'updatedBy']))