Для подключения SharedArrayBuffer на стороне клиента нужна определенная магия с заголовками, которую не подделаешь через http-equiv (а вот на бэке/в ноде—заводится из коробки).
Альтернатива - обычные воркеры, которые получают копию кусочка общего массива данных. А это значит, что резалты надо потом сшивать заново. И начался поиск самой быстрой альтернативы.
Спред-оператор с присваиванием (arr = [...arr, ...subarray]) отъехал сразу. Да, это максимально простое и чистое с т.з кодстайла решение, но чудовищно медленное. Где-то в 50-70 раз более тормознутое, чем оптимальный вариант.
Затем были последовательно push со спредом (arr.push(...subarray)), concat и splice. Почти одинаковая производительность, замедлялись по сравнению с оптимумом в 8-10 раз. Не фатально, но и не айс.
И теперь - оптимум. Тупой последовательный прогон по длине массивов, из которых мы склеиваем результат с последовательным наращиванием смещения по мере того, как мы заканчиваем читать один массив и переключаемся на другой.
Вывод - все этим новомодные map, forEach, спред и т.д синтаксически очень красивы, делают код намного чище и понятнее, и если производительность не критична, то ими можно и нужно пользоваться. Но если нужно вдарить по газам - нет ничего лучше старого for(let i = 0; i < i1; i++). С-style, тксзть.
P.S.
Параноидальный яндех трет вложения с жабоскриптом, даже если засунуть его в архив. Так что слайды будут завтра