Toggle navigation
MeasureThat
.net
Create a benchmark
Tools
Feedback
Feature Requests
FAQ
Register
Log In
Run results for:
Array concat vs spread vs push spread, loop, apply (bigger cases 2)
Compare the new ES6 spread operator with the traditional concat() method and push
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) QtWebEngine/6.6.1 Chrome/112.0.5615.213 Safari/537.36
Browser:
Chrome 112
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 years ago
Benchmark engine:
Benchmark.js
Array.prototype.concat
1.0M/s
Push Spread
572K/s
Push Apply
563K/s
Push Loop
469K/s
spread operator
388K/s
View exact numbers
Test name
Executions per second
✓
Array.prototype.concat
1,026,449 Ops/sec
Push Spread
572,143 Ops/sec
Push Apply
563,176 Ops/sec
Push Loop
468,842 Ops/sec
spread operator
387,888 Ops/sec
Script Preparation code:
var subarrs = [ [ "hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7, "hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7,"hello", true, 7 ], [ "yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27, "yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27,"yes", "no", "maybe", false, 27 ], [ 16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest", 16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest",16, "I", "wonder", "what", "will", "be", "fastest" ] ];
Tests:
Array.prototype.concat
var other = [ 1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3 ] for (var len = subarrs.length, i = 0; i < len; i++){ other = other.concat(subarrs[i]); } return other;
spread operator
var other = [ 1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3 ] for (var len = subarrs.length, i = 0; i < len; i++){ other = [ ...other, ...subarrs[i] ] } return other;
Push Spread
var other = [ 1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3 ] for (var len = subarrs.length, i = 0; i < len; i++){ other.push(...subarrs[i]); } return other;
Push Apply
var other = [ 1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3 ] for (var len = subarrs.length, i = 0; i < len; i++){ other.push.apply(other, subarrs[i]); } return other;
Push Loop
var other = [ 1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3,1, 2, 3 ] for (var len = subarrs.length, i = 0; i < len; i++){ for (var jarr = subarrs[i], jen = jarr.length, j = 0; j < jen; j++){ other.push(jarr[j]); } } return other;