JavaScriptのperformance.now()メソッドを使い、処理にかかる時間を計測する方法を紹介します。
performance.now()メソッドで時間測定
performance.now()メソッドを実行すると、プログラムの実行からの経過ミリ秒を返します。
console.log(performance.now());
以下のコードで処理にかかる時間を測定することができます。
const start = performance.now();
// 時間測定する処理
console.log(performance.now() - start);
コード中の処理速度を計測したい箇所でこのようにすることでコンソールに実行時間が出力されます。performance.now()メソッドは高精度で、ミリ秒をさらに少数で出力するため正確な時間測定が可能となります。
時間測定処理の関数化
上で説明した時間測定処理は、以下のように関数化すると便利です。
function showPerformanceTime(fn, n = 1) {
const start = performance.now();
for (let i = 0; i < n; i++) {
fn();
}
console.log((performance.now() - start) / n);
}
引数に関数を渡すことで、コンソールに実行時間を表示します。また、第2引数では試行回数を指定でき、平均を出力するため精度が上がります(省略可能で、既定値は1)。
Date.now()メソッドを使った時間測定(非推奨)
別の方法として、Date.now()メソッドを使った方法もあります。
const start = Date.now();
// 時間測定する処理
console.log(Date.now() - start);
この方法ではミリ秒を整数での出力となり、performance.now()に比べて精度が低いため非推奨となります。
console.time()メソッドを使った時間測定(手軽)
さらに別の方法として、console.time()、console.timeEnd()メソッドを使った方法があります。
console.time();
// 時間測定する処理
console.timeEnd();
この方法はperformance.now()と同等の精度で結果を出力します。コード量が短いため手軽に使えます。また、結果が文字列で出力される点が異なります。