concat map
comparing concat map implementations
Date tested:
3 years ago
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36
Test name
Executions per second
concat 1
515.3 Ops/sec
concat 2
6537.8 Ops/sec
concat 1 small to large
50563.7 Ops/sec
concat 2 small to large
41234.9 Ops/sec
Benchmark definition (click to collapse):
Script Preparation code:
function concatMap1(xs, fn) { return xs.map(v => fn(v)).reduce((acc, arr) => Array.isArray(arr) ? acc.concat(arr) : acc.concat([arr]), []); } function concatMap2(xs, fn) { var res = []; for (var i = 0; i < xs.length; i++) { var x = fn(xs[i], i); if (Array.isArray(x)) res.push.apply(res, x); else res.push(x); } return res; }
Tests:
concat 1
concatMap1(Array(1000).fill(0), v => [v-1, v, v+1])
concat 2
concatMap2(Array(1000).fill(0), v => [v-1, v, v+1])
concat 1 small to large
concatMap1([1, 2, 3, 4], v => Array(1000).fill(v))
concat 2 small to large
concatMap2([1, 2, 3, 4], v => Array(1000).fill(v))
Open this result on MeasureThat.net