はじめに
この実験では、ヘルツ周波数の概念を使って JavaScript 関数のパフォーマンスを測定します。関数を実行するのにかかった経過時間を計算するために performance.now()
メソッドをどのように使うか、および 1 秒当たりのサイクル数をどのように決定するかを学びます。実際の例と演習を通じて、同じ関数の異なる実装間のパフォーマンスの違いを探ります。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、ヘルツ周波数の概念を使って JavaScript 関数のパフォーマンスを測定します。関数を実行するのにかかった経過時間を計算するために performance.now()
メソッドをどのように使うか、および 1 秒当たりのサイクル数をどのように決定するかを学びます。実際の例と演習を通じて、同じ関数の異なる実装間のパフォーマンスの違いを探ります。
1 秒間の関数の実行回数(hz/ヘルツ)を測定するには、hz
関数を使用します。これは、次の手順に従って行うことができます。
node
と入力します。performance.now()
を使用して、関数を iterations
回実行するのにかかった経過時間を計算します。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 でさらに多くの実験を練習できます。