Array Join vs String Concat

Какой метод быстрее?

Array Join:

var str_to_split = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
var myarray = str_to_split.split(",");

var output=myarray.join("");

String Concat:

var str_to_split = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
var myarray = str_to_split.split(",");

var output = "";
for (var i = 0, len = myarray.length; i<len; i++){
    output += myarray[i];
}

Ответы

Ответ 1

Конкатенация строк в ECMAScript выполняется быстрее. Вот эталон, который я создал, чтобы показать вам:

http://jsben.ch/#/OJ3vo

Ответ 2

Я могу сказать, что использование Array.join() выполняется быстрее, я работал над несколькими частями кода JavaScript и значительно увеличил производительность, удалив манипуляции с строками в пользу массивов.

Ответ 3

С 2011 года и до сегодняшнего дня...

См. следующий join переписать с использованием конкатенации строк и насколько медленнее, чем стандартная реализация.

// Number of times the standard `join` is faster, by Node.js versions:
// 0.10.44: ~2.0
// 0.11.16: ~4.6
// 0.12.13: ~4.7
// 4.4.4: ~4.66
// 5.11.0: ~4.75
// 6.1.0: Negative ~1.2 (something is wrong with 6.x at the moment)
function join(sep) {
    var res = '';
    if (this.length) {
        res += this[0];
        for (var i = 1; i < this.length; i++) {
            res += sep + this[i];
        }
    }
    return res;
}

Мораль - не конкатенировать строки вручную, всегда используйте стандартный join.

Ответ 4

Согласно этот документ Google под названием " Оптимизация кода JavaScript строка concat медленнее, чем объединение массива, но, по-видимому, это не так для современных движков Javascript.

Я сделал тест для примера теста Fibonacci, который они использовали в документе, и показывает, что конкатенация (склеивание) строки почти 4x с помощью Array join.

Ответ 5

Оператор распространения, написанный с тремя последовательными точками (...), является новым в ES6 и дает вам возможность расширять или распространять итерируемые объекты в несколько элементов.

const books = ["Don Quixote", "The Hobbit", "Alice in Wonderland", "Tale of Two Cities"];
console.log(...books);