関数のヘルツ周波数

JavaScriptJavaScriptBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、ヘルツ周波数の概念を使って JavaScript 関数のパフォーマンスを測定します。関数を実行するのにかかった経過時間を計算するために performance.now() メソッドをどのように使うか、および 1 秒当たりのサイクル数をどのように決定するかを学びます。実際の例と演習を通じて、同じ関数の異なる実装間のパフォーマンスの違いを探ります。

関数の周波数の計算

1 秒間の関数の実行回数(hz/ヘルツ)を測定するには、hz 関数を使用します。これは、次の手順に従って行うことができます。

  1. ターミナル/SSH を開き、コーディングを練習するために node と入力します。
  2. イテレーションループの前後でミリ秒単位の差分を取得するために performance.now() を使用して、関数を iterations 回実行するのにかかった経過時間を計算します。
  3. ミリ秒を秒に変換し、それを経過時間で割って 1 秒当たりのサイクル数を返します。
  4. 100 回のイテレーションのデフォルトを使用したい場合は、2 番目の引数 iterations を省略します。
const hz = (fn, iterations = 100) => {
  const before = performance.now();
  for (let i = 0; i < iterations; i++) fn();
  return (1000 * iterations) / (performance.now() - before);
};

10,000 個の数値の配列の合計を計算する 2 つの関数のパフォーマンスを比較するために hz 関数を使用する例を以下に示します。

const numbers = Array(10000)
  .fill()
  .map((_, i) => i);

const sumReduce = () => numbers.reduce((acc, n) => acc + n, 0);
const sumForLoop = () => {
  let sum = 0;
  for (let i = 0; i < numbers.length; i++) sum += numbers[i];
  return sum;
};

Math.round(hz(sumReduce)); // 572
Math.round(hz(sumForLoop)); // 4784

この例では、sumReduce は関数の実行頻度が低いため、sumForLoop よりも高速です。

まとめ

おめでとうございます!関数のヘルツ周波数の実験を完了しました。あなたのスキルを向上させるために、LabEx でさらに多くの実験を練習できます。