テスト結果:
safari には 65535 個あります。これは格納する ushort です (2 バイト 16 1)。それ以上は無視されます。
他のブラウザは少なくとも int.MaxValue ですが、FireFox では実際のパラメータを維持するためにさえ long を使用していると言われています。
他のブラウザは int または uint である可能性があります。結局のところ、ボトルネックは 65535 であることがわかっています。
上記の基礎に基づいて、配列を接続するときに a=a.concat(b) の代わりに [].push.apply(a,b) を使用することを検討できます。
safari の場合、b の長さは 65535 を超えることができないことに注意する必要があります。
concat の問題は、生成された新しい配列が 2 つの配列 a と b を走査し、a と b の要素を順番に配置することです。
テストコード:
var count = 100000、a = [1,2,3]、b = [4,5,6]、r = []、i、d;
d = 新しい日付 ; for (i = count; i-- ;){
a.concat(b);
}
r[0] = 新しい日付 - d;
d = 新しい日付 ;
for (i = count; i-- ;){
r.push.apply(a,b) );
//a = [1,2,3] ;
}
r[1] = 新しい日付 - d;
アラート(r);
IE6 chrome2 safari 3 firefox 2 などの古いブラウザでも、一部のブラウザが削除されたとしてもプッシュでは完全に勝利していると結論付けることができます。
//a = [1, 2 ,3]; コメント部分は、実際には、chrome7 dev や safari 5 よりも優れています。