⚖️

Typescript関数の実行時間とメモリー使用量をざっくり測る方法

2023/09/09に公開

事前準備

https://zenn.dev/masa_dev/articles/30d92a3ed990dae73672

こちらの環境構築を終えてts-nodeでcodeのコンパイルと実行を行えることが前提の記事となっております🙇

TL;DR

3ステップです!

ステップ1!💡

src/index.ts
const func = (str: string): void => {
  // 計測したい処理
  console.log(str);
};

const startTime = performance.now();
func(); 💡
const endTime = performance.now();
// 関数の終了時間 - 開始時間 = 関数の実行時間
console.log(`Time : ${~~(endTime - startTime)}ms`);

// src/index.tsの実行時のメモリ使用量を取得(このファイルのメモリ使用量、この関数ではない)
const used = process.memoryUsage().heapUsed / 1024; 💡
console.log(`Memory : ${Math.round(used)} KB`);

ステップ2!

package.json
{
  .
  .
  .
  "scripts": {
    "src:index": "./node_modules/.bin/ts-node src/index.ts",
  },
  . 
  .
  .
}

ステップ3!

terminal
$ npm run src:index

出力結果

terminal
> ./node_modules/.bin/ts-node src/index.ts

実行時間を計測したい処理
Time : 1ms
Memory : 67309 KB

無事に計測することができるようになりました!🎉

こちらの記事で計算量(時間計算量、空間計算量)についての基礎的なことがすごく分かりやすく学ぶことができますので気になる方はぜひ見てください!
https://atcoder.jp/contests/apg4b/tasks/APG4b_w

小話

最近Atcoderを始めたのですが、コードを書くのもブラウザから書いて提出してやっとエラーに気づく
みたいな流れを何回も繰り返してこれではダメだ!と感じローカルで計測する環境の構築を行いました。 まだまだ戦えるレベルではないのですが地道に以下の問題を解いて来週土曜の21:00もAtcoderBiginnerContestに挑もうと思います!

https://qiita.com/drken/items/fd4e5e3630d0f5859067

ではまた明日!

Discussion