ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の配列複製方法 (スライスと For ループ) はどれが最も速いですか?

JavaScript の配列複製方法 (スライスと For ループ) はどれが最も速いですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-10 10:24:15930ブラウズ

Which JavaScript Array Duplication Method (Slice vs. For Loop) is Fastest?

JavaScript での配列の複製速度の比較: スライスと For ループ

JavaScript では、複製を作成する一般的な方法が 2 つあります。配列のスライス メソッドと for ループ。それぞれの速度を徹底的に分析するために、さまざまな複製方法のベンチマークが行われ、いくつかの驚くべき結果が明らかになりました。

速度測定

異なるブラウザ間で実施されたベンチマークでは、次のことが示されました。配列を複製する最速の方法は、使用されているブラウザ エンジンによって異なります。 Blink (Chrome、Edge) のようなブラウザでは、通常、slice メソッドの方が for ループよりもパフォーマンスが高く、concat の方がわずかに遅くなります。

ただし、古いバージョンの Firefox など、slice と concat の実装があまり最適化されていないブラウザの場合は、 Internet Explorer では、while ループ メソッドが断然勝者として浮上します。

例コード

ブラウザのコンソールでメソッドのベンチマークを自分で行うために使用できるサンプル スクリプトを次に示します。

// While loop method
var n = 1000 * 1000;
var start = +new Date();
var a = Array(n);
var b = Array(n);
var i = a.length;
while (i--) b[i] = a[i];
console.log(new Date() - start);

// Slice method
var n = 1000 * 1000;
var start = +new Date();
var a = Array(n);
var b = a.slice();
console.log(new Date() - start);

考慮事項

スライスまたは for ループ メソッドは配列自体を複製しますが、配列の内容は参照によってコピーされ、深くコピーされるわけではないことに注意することが重要です。クローン化されました。これは、どちらかの配列への変更が両方に反映されることを意味します。

それでは、どちらの方法を選択すればよいでしょうか?最新のブラウザでは、スライス方式が最適なオプションです。ただし、最適化されていない JavaScript 実装を備えた古いブラウザをターゲットにしている場合は、for ループ メソッドの方がパフォーマンスが向上する可能性があります。

以上がJavaScript の配列複製方法 (スライスと For ループ) はどれが最も速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。