[TypeScript] Performance

正確なパフォーマンス測定

performance.now()で細かな精度の時間を取得できる。
計測前と計測後に値をとって引き算した結果のミリ秒を見るのが一番単純。

Date.nowは1ミリ秒の精度だが、performance.nowは0.005ミリ秒の精度と高品質.

nodejsの場合

perf_hooksperformanceがあるのでそれを使う。

const pref = require('perf_hooks').performance;

const startTime = pref.now();

let sum = 0
for (let i = 0; i < 1000000; i++) {
    sum = sum + 1
}

const endTime = pref.now();
console.log(`100万回: ${Math.round(endTime - startTime)}ミリ秒`);

普通にperformanceってやると問題あり

  • @types/nodeがあるとビルドでできるが、実際はperformanceがない
    • nodejsだとperf_hooks.performanceだから
    • lib.dom.d.tsでperformanceが認識されてしまう
      • nodejsだとDOM使わないので無効にしたいけど分からなかった...
      • tsconfig.jsonlib["dom"]としてもダメだった

ブラウザの場合

windowperformanceがあるのでそれを使う。