Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

配列の合計:JavaScriptでの再帰とforループとES6メソッドの比較


たとえば、多数のNumberエントリを持つ配列があり、再帰にかかる時間と単純なループにかかる時間と、ES6関数が配列のすべてのエントリを合計するのにかかる時間(再帰vsforループvsES6関数)を比較する必要があるとします。 。

ここでは、大きな配列をシミュレートするために、比較的小さな配列を多数回(10000000のオーダー)繰り返します。私たちの主な目的は、各メソッドが配列を合計するのにかかる時間の大まかな比率を設定することです。

パート1:再帰的アプローチ

const recursiveSum = (arr, len = 0, sum = 0) => {
   if(len < arr.length){
      return recursiveSum(arr, len+1, sum + arr[len]);
   };
   return sum;
};

パート2:ループアプローチ

const loopingSum = arr => {
   let sum = 0;
   for(let i = 0; i < arr.length; i++){
      sum += arr[i];
   };
   return sum;
};

パート3:ES6アプローチ

const ES6Sum = arr => arr.reduce((acc, val) => acc+val);

次に、コンソールメソッドtime()とtimeEnd()-

を使用して、これら3つの関数のパフォーマンスを比較してみましょう。

const ITERATIONS = 100000000;
const arr = [12, 65, 87, 2, 23, 87, 4, 66, 34, 89, 89, 32, 4];
const recursiveSum = (arr, len = 0, sum = 0) => {
   if(len < arr.length){
      return recursiveSum(arr, len+1, sum + arr[len]);
   };
   return sum;
};
const loopingSum = arr => {
   let sum = 0;
   for(let i = 0; i < arr.length; i++){
      sum += arr[i];
   };
   return sum;
};
const ES6Sum = arr => arr.reduce((acc, val) => acc+val);
console.time('recursive approach');
for(let k = 0; k < ITERATIONS; k++){
   recursiveSum(arr);
};
console.timeEnd('recursive approach');
console.time('looping approach');
for(let l = 0; l < ITERATIONS; l++){
   loopingSum(arr);
};
console.timeEnd('looping approach');
console.time('ES6 approach');
for(let m = 0; m < ITERATIONS; m++){
   loopingSum(arr);
};
console.timeEnd('ES6 approach');

次に、可能なコンソール出力を見てみましょう-

−コードのパフォーマンスはシステムに大きく依存するため、これは単なるコンソール出力の可能性です。ただし、これら3つの機能にかかる時間の比率は、すべてのシステムでほぼ同じです。

recursive approach: 13.774s
looping approach: 3.138s
ES6 approach: 2.493s

したがって、ここでは、特定のマシンで、多数の反復に対して3つのアプローチにかかる時間を確認できます。これは、配列に対する小規模で基本的な計算の場合、ES6関数が他のどのアプローチよりも効率的でパフォーマンスが高いことを示しています。

−より良い結果を得るには、このコードをオンラインIDEでテストすることは避けてください。


  1. for ... inステートメントを使用してJavaScriptの配列をループする方法は?

    for ... inループは、オブジェクトのプロパティをループするために使用されます。配列をループするfor…inステートメントを見てみましょう。 例 次のコードを実行して、for…inステートメントを使用して配列をループする方法を学ぶことができます- ライブデモ <html>    <body>       <script>          var items = new Array('Hello', 'World'); &

  2. JavaScriptの基本的な配列メソッド

    いくつかの基本的なJavaScript配列メソッドは次のとおりです- メソッド 説明 Array.push() 配列の最後に要素を追加します。 Array.pop() 配列の最後から要素を削除します。 Array.unshift() 配列の先頭に要素を追加するには Array.shift() 配列の前面から要素を削除します。 Array.splice() スプライスに要素を追加または削除するには 以下は、基本的な配列メソッドのコードです- 例 <!DOCTYPE html> <html lang="en