Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
ClassList v2
(version: 0)
Comparing performance of:
forEach & concatenate reduce vs forEach & concatenate join vs for .. of & concatenate reduce vs for .. of & concatenate join
Created:
5 years ago
by:
Guest
Jump to the latest result
Script Preparation code:
var obj = {}; for (i = 1000; i > 0; i--) { if (i%2 == 0) { obj[i] = 'String'; } else { obj[i] = [ 'Array of String', 'Array of String' ]; } }
Tests:
forEach & concatenate reduce
function ClassList(collection={}) { const classNames = {}; const keys = Object.keys(collection); keys.forEach((key) => { const innerCollection = collection[key]; const collectionCheck = Object.prototype.toString.call(innerCollection); switch (collectionCheck) { case '[object Object]': { const innerKeys = Object.keys(innerCollection); if (innerKeys.length === 0) { classNames[key] = ''; break; } let classList = []; innerKeys.forEach((innerKey) => { if (!innerCollection[innerKey] || !innerCollection[innerKey].length) { return; } const innerCollectionCheck = Object.prototype.toString.call(innerCollection[innerKey]); switch (innerCollectionCheck) { case '[object Array]': classList.push(...innerCollection[innerKey]); break; case '[object String]': classList.push(innerCollection[innerKey]); break; } }); classNames[key] = classList.reduce((acc, cl) => (acc += cl + ' '), ''); break; } case '[object Array]': classNames[key] = innerCollection.reduce((acc, cl) => (acc += cl + ' '), ''); break; case '[object String]': classNames[key] = innerCollection; break; } }); return classNames; } ClassList( obj );
forEach & concatenate join
function ClassList(collection={}) { const classNames = {}; const keys = Object.keys(collection); keys.forEach((key) => { const innerCollection = collection[key]; const collectionCheck = Object.prototype.toString.call(innerCollection); switch (collectionCheck) { case '[object Object]': { const innerKeys = Object.keys(innerCollection); if (innerKeys.length === 0) { classNames[key] = ''; break; } let classList = []; innerKeys.forEach((innerKey) => { if (!innerCollection[innerKey] || !innerCollection[innerKey].length) { return; } const innerCollectionCheck = Object.prototype.toString.call(innerCollection[innerKey]); switch (innerCollectionCheck) { case '[object Array]': classList.push(...innerCollection[innerKey]); break; case '[object String]': classList.push(innerCollection[innerKey]); break; } }); classNames[key] = classList.join(' '); break; } case '[object Array]': classNames[key] = innerCollection.join(' '); break; case '[object String]': classNames[key] = innerCollection; break; } }); return classNames; } ClassList( obj );
for .. of & concatenate reduce
function ClassList(collection={}) { const classNames = {}; const keys = Object.keys(collection); for (const key of keys) { if ( Object.prototype.hasOwnProperty.call(collection, key) ) { const innerCollection = collection[key]; const collectionCheck = Object.prototype.toString.call(innerCollection); switch (collectionCheck) { case '[object Object]': { const innerKeys = Object.keys(innerCollection); if (innerKeys.length === 0) { classNames[key] = ''; break; } let classList = []; innerKeysLoop: for (const innerKey of innerKeys) { if (!innerCollection[innerKey] || !innerCollection[innerKey].length) { continue innerKeysLoop; } const innerCollectionCheck = Object.prototype.toString.call(innerCollection[innerKey]); switch (innerCollectionCheck) { case '[object Array]': classList.push(...innerCollection[innerKey]); break; case '[object String]': classList.push(innerCollection[innerKey]); break; } } classNames[key] = classList.reduce((acc, cl) => (acc += cl + ' '), ''); break; } case '[object Array]': classNames[key] = innerCollection.reduce((acc, cl) => (acc += cl + ' '), ''); break; case '[object String]': classNames[key] = innerCollection; break; } } } return classNames; } ClassList( obj );
for .. of & concatenate join
function ClassList(collection={}) { const classNames = {}; const keys = Object.keys(collection); for (const key of keys) { if ( Object.prototype.hasOwnProperty.call(collection, key) ) { const innerCollection = collection[key]; const collectionCheck = Object.prototype.toString.call(innerCollection); switch (collectionCheck) { case '[object Object]': { const innerKeys = Object.keys(innerCollection); if (innerKeys.length === 0) { classNames[key] = ''; break; } let classList = []; innerKeysLoop: for (const innerKey of innerKeys) { if (!innerCollection[innerKey] || !innerCollection[innerKey].length) { continue innerKeysLoop; } const innerCollectionCheck = Object.prototype.toString.call(innerCollection[innerKey]); switch (innerCollectionCheck) { case '[object Array]': classList.push(...innerCollection[innerKey]); break; case '[object String]': classList.push(innerCollection[innerKey]); break; } } classNames[key] = classList.join(' '); break; } case '[object Array]': classNames[key] = innerCollection.join(' '); break; case '[object String]': classNames[key] = innerCollection; break; } } } return classNames; } ClassList( obj );
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
forEach & concatenate reduce
forEach & concatenate join
for .. of & concatenate reduce
for .. of & concatenate join
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
It looks like you've shared some benchmarking results! To summarize, there are four tests with different browser versions and device platforms. The test names are: 1. `forEach & concatenate reduce` 2. `for .. of & concatenate join` 3. `for .. of & concatenate reduce` (second run) 4. `for .. of & concatenate join` (second run) The executions per second for each test vary, but it appears that the first test has the highest execution rate. Here are some observations: * Safari 13 on a Mac desktop is consistently performing well. * The tests with `forEach` seem to be faster than those with `for .. of`. * The tests with `concatenate join` seem to be slower than those with `concatenate reduce`. However, without more context or additional information, it's difficult to provide a definitive answer. Could you please share the specific questions or requirements you'd like me to help with?
Related benchmarks:
Array vs Object
ClassList test
ClassList test v4
ClassList v5
Comments
Confirm delete:
Do you really want to delete benchmark?