0

重複の可能性:
文字列連結が配列結合よりも速いのはなぜですか?

通常、Javascript で動的に html コンテンツを生成する必要があります。以下のような2つの方法:

var s = "", a = [];
for (var i = 0, l = data.length; i < l; i++) {
  s += "<a href='#'>" + data[i].name + "</a>";
  a[i] = "<a href='#'>" + data[i].name + "</a>";
}
container.innerHTML = s; // or
container.innerHTML = a.join("");

どちらの方法が良いですか?主にパフォーマンスに重点を置いているか、違いを無視できます。

4

3 に答える 3

2

IE6/7 をサポートしなければならないことからの遺産として、私は常に配列メソッドの方がはるかに高速であると考えていましたが、実際にはそうではないようです。

以下は、小さな文字列 'a' を使用したテストです。

これは大きな文字列を使ったテストです (lorem ipsum の最初の段落):

最新のすべてのブラウザー (私は IE9/Chrome19/FF12 をテストしました) では、連結はより高速であり、長い文字列を使用するとはるかに高速になります。

ただし、IE7 では配列メソッドの方はるかに高速であることに注意することが重要です。そのため、それをサポートする必要がある場合 (IE7 のサポートについては 2 度考えます)、おそらく配列メソッドを使用する必要があります。ばかげているように文字列連結で遅くなります。

実際、IE7 をサポートする必要がある場合は、重いクライアント側の JS を使用しないようにします。

于 2012-06-26T08:08:26.610 に答える
2

これはあなたの質問に答えます: JavaScript での高性能文字列連結

于 2012-06-26T07:16:33.417 に答える
2

配列方式の方が優れています。

文字列を連結すると、反復ごとに前の文字列全体が新しい文字列にコピーされます。最終的に、結果の文字列のサイズよりも多くのデータをコピーすることになります。追加の反復ごとに、コピーしたデータの量が約 2 倍になるため、非常に高速になります。

于 2012-06-26T07:22:29.180 に答える