ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のスライスと For ループ: どちらの方法が配列の複製を高速化しますか?
パフォーマンス分析: スライスと For ループを使用した JavaScript での配列の複製
JavaScript では、配列を複製する方法が複数あります。一般的な 2 つの方法には、slice メソッドと for ループがあります。この記事では、どちらが速いかを判断するために、相対的なパフォーマンスを調査します。
スライス メソッド:
スライス メソッドは、元の配列の指定された部分を抽出することによって新しい配列を作成します。次のコードは例を示しています。
var dup_array = original_array.slice();
For ループ:
for ループは、元の配列の各要素を反復処理し、新しい配列にコピーを手動で作成します。 array:
for(var i = 0, len = original_array.length; i < len; ++i) dup_array[i] = original_array[i];
結果:
ベンチマークの結果、Chrome などの blink ベースのブラウザでは一般にスライス方法の方が高速であることが判明しました。 Firefox や Safari などの他のブラウザでは for ループの方が高速です。これは、Blink ブラウザのスライスと連結の内部最適化によるものです。
特に、スプレッド構文 (例: [...original_array]) と Array.from() は、配列を複製するための最速のメソッドとして浮上しています。 、ほとんどのシナリオでスライスと for ループの両方を上回ります。
ベンチマークスクリプト:
次の JavaScript スクリプトをブラウザのコンソールで実行して、for ループおよびスライス メソッドのパフォーマンスを比較できます:
Forループ:
n = 1000 * 1000; start = +new Date(); a = Array(n); b = Array(n); i = a.length; while (i--) b[i] = a[i]; console.log(new Date() - start);
スライス:
n = 1000 * 1000; start = +new Date(); a = Array(n); b = a.slice(); console.log(new Date() - start);
これらのスクリプトを複数回実行することで、異なるブラウザーでの各メソッドの相対的なパフォーマンスを観察できます。
注: これらのメソッドは浅い条件のみを実行することに注意してください。コピー。元の配列内で参照されているオブジェクトが複製配列と共有されることを意味します。より複雑なデータ構造については、ディープ クローン作成手法を検討してください。
以上がJavaScript のスライスと For ループ: どちらの方法が配列の複製を高速化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。