手順
以下のように、処理時間を測りたい箇所の前後にコードを挿入してみましょう。
const start = performance.now() // 計測開始
// 任意の処理
console.log(`time: ${(performance.now() - start).toPrecision(10)}`); // 経過時間を表示
こうすることで「任意の処理」にかかる時間をコンソールに表示することができます。
time: 0.008373022079
使用例
2つの処理についてそれぞれの時間を測る
複数の処理についてまとめて時間を測りたい時に便利。
const start = performance.now() // 計測開始
// 1秒待つ(処理1)
const date = new Date();
while (true) if (new Date() - date > 1000) break;
console.log(`time: ${(performance.now() - start).toPrecision(10)}`); // 経過時間を表示
const start2 = performance.now() // 計測開始
// もう1秒待つ(処理2)
const date2 = new Date();
while (true) if (new Date() - date2 > 1000) break;
console.log(`time2: ${(performance.now() - start2).toPrecision(10)}`); // 経過時間を表示
time: 1000.459022
time2: 1000.435356
2つの処理について最初からの時間を測る
「経過時間を表示」する行を、時間を測りたい箇所にペーストしていくだけなのでさらに便利。
const start = performance.now() // 計測開始
// 1秒待つ(処理1)
const date = new Date();
while (true) if (new Date() - date > 1000) break;
console.log(`time: ${(performance.now() - start).toPrecision(10)}`); // 経過時間を表示
// もう1秒待つ(処理2)
const date2 = new Date();
while (true) if (new Date() - date2 > 1000) break;
console.log(`time2: ${(performance.now() - start).toPrecision(10)}`); // 経過時間を表示
time: 1000.459022
time2: 2002.435356
処理の解説
使用例で出てきた関数について、大事な所をざっくり解説します。
performance.now()
console.log(performance.now())
実行された瞬間のタイムスタンプをミリ秒で返却してくれます。
4925.700000286102
ブラウザによっては数値が丸められたりします。
.toPrecision(10)
console.log(performance.now())
console.log(performance.now().toPrecision(4)) // 4桁
console.log(performance.now().toPrecision(5)) // 5桁
数字オブジェクトを括弧内で指定した桁数にします。
4870.699999809265
4871
4870.7
丸める桁は四捨五入されます。
まとめ:どの言語でも似たような感じ
ほかの言語で時間を計測したことのある方は感じられたかと思いますが、結局のところ、
「開始時点の時間を取得」→「終了時点で時間を取得」→「差を測る」
という計測の仕方はどの言語でも大体同じです。
「デコレータにこの機能を持たせて、関数単位でラクラク時間計測~」とかも便利ですが、
基本的には「その瞬間のタイムスタンプを取得する」機能さえわかればどの言語でも簡単に計測が可能だと思いますので、
新しい言語を触る際はぜひお試しいただければと思います。
では!