Toggle navigation
MeasureThat
.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Concat vs push(...) for large arrays (500 up to 50000)
(version: 1)
Comparing the various ways to append to a large array
Comparing performance of:
Control (for push) vs Concat vs Spread vs Apply
Created:
one year ago
by:
Guest
Go to the latest result
Script Preparation code:
window.top.tests = {control:[], concat:[], spread:[], apply: []}; window.test = (new Array(500)).fill(null).map((e, i) => ( { "_id": "6756f95de1bf2a3657bf2262", "index": 0, "guid": "bdc23f10-a1ac-47ad-a423-1c498f5d7857", "isActive": true, "balance": "$2,288.04", "picture": "http://placehold.it/32x32", "age": i, "eyeColor": "brown", "name": "Reid Holden", "gender": "male", "company": "KAGGLE", "email": "reidholden@kaggle.com", "phone": "+1 (844) 427-3173", "address": "923 Dewitt Avenue, Macdona, Florida, 2333", "about": "Eu quis amet ipsum id occaecat reprehenderit cillum cupidatat ullamco ad duis. Lorem tempor incididunt culpa dolor labore et officia nulla aliqua et incididunt amet dolor reprehenderit. Ut voluptate est elit quis fugiat ex magna irure eiusmod esse duis sint qui. Exercitation duis duis ullamco est eiusmod sunt eiusmod velit laboris ex elit.\r\n", "registered": "2017-07-12T07:52:14 -02:00", "latitude": 49.456753, "longitude": -37.824429, "tags": [ "est", "laborum", "laborum", "incididunt", "adipisicing", "anim", "sit" ], "friends": [ { "id": 0, "name": "Gutierrez Collins" }, { "id": 1, "name": "Lisa Richardson" }, { "id": 2, "name": "Wilson Kane" } ], "greeting": "Hello, Reid Holden! You have 4 unread messages.", "favoriteFruit": "strawberry" })); window.cutoff = 50000;
Tests:
Control (for push)
for (let element of window.test) window.top.tests.control.push(element); if (window.top.tests.control.length > window.cutoff) { window.top.tests.control = []; console.log('reset control'); }
Concat
window.top.tests.concat = window.top.tests.concat.concat(window.test); if (window.top.tests.concat.length > window.cutoff) { window.top.tests.concat = []; console.log('reset concat'); }
Spread
window.top.tests.spread.push(...window.test); if (window.top.tests.spread.length > window.cutoff) { window.top.tests.spread = []; console.log('reset spread'); }
Apply
window.top.tests.apply.push.apply(window.top.tests.apply, window.test); if (window.top.tests.apply.length > window.cutoff) { window.top.tests.apply = []; console.log('reset apply'); }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
Control (for push)
Concat
Spread
Apply
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
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/OS:
Chrome 131 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Spread
177K/s
Apply
166K/s
Concat
19K/s
Control (for push)
7K/s
View exact numbers
Test name
Executions per second
✓
Spread
177,116 Ops/sec
Apply
166,349 Ops/sec
Concat
18,923 Ops/sec
Control (for push)
6,743 Ops/sec
Related benchmarks
Concat vs push(...) vs flat for large arrays of arrays
Concat vs push.apply vs flat for large arrays of arrays
Concat vs push.apply vs flat for larger arrays of arrays
Concat vs push(...) for large arrays (----)
Concat vs push(...) for large arrays (100000 up to 5000000)
Comments
Confirm delete:
Do you really want to delete benchmark?