Массив присоединиться против строку конкатенацию
какой метод быстрее?
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("");
Строку Конкатенацию:
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];
}
6 ответов:
конкатенация строк выполняется быстрее в ECMAScript. Вот тест, который я создал, чтобы показать вам:
Я определенно могу сказать, что с помощью массива.join() работает быстрее. Я работал над несколькими фрагментами кода JavaScript и значительно ускорил производительность, удалив строковые манипуляции в пользу массивов.
С 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.
по данным этот документ Google под названием 'оптимизация кода JavaScript' string concat медленнее, чем array join, но, по-видимому, это не так для современных движков Javascript.
Я эталон для примера теста Фибоначчи что они использовали в документе, и это показывает, что сцепление (склеивание) строки почти в 4 раза быстрее, чем с помощью
Arrayjoin.
ручная конкатенация выполняется быстрее, для числового массива фиксированной длины.
вот тест JSPerf, который проверяет эти две операции:
zxy.join('/') // versus zxy[0] + '/' + zxy[1] + '/' + zxy[2] // given the array zxy = [1, 2, 3] // resulting in the string '0/1/2'результаты: С Помощью Chrome 64.0.3282.186,
Array.joinбыл на 46% медленнее.
оператор распространения, написано тремя последовательными точками ( ... ),является новым в ES6 и дает вам возможность расширять или распространять итерационные объекты на несколько элементов.
const books = ["Don Quixote", "The Hobbit", "Alice in Wonderland", "Tale of Two Cities"]; console.log(...books);принты: Дон Кихот Хоббит Алиса в Стране чудес сказка о двух городах
Comments