web-dev-qa-db-ja.com

TypeScript Node.jsアプリケーションのプロファイリング

TypeScript Node.jsアプリケーションのプロファイリングを行うためのツールを探しています。これは、コードソース全体を変更することなく行えます。

プロファイリングとは、次のような結果を出力する特定のツールを使用してアプリケーションを起動することです。

メソッド|消費されたメモリ|消費時間

a()| 1024 | 20ms…。

私はいくつかのインターネット調査を行い、これを見つけました: https://github.com/screepers/screeps-TypeScript-profiler

しかし、それを使用して、(@ Profilerデコレーターを追加することにより)コード全体を編集する必要があり、メソッドを自動的に検出するための何かを探しています。

ご協力いただきありがとうございます!

4
abderrahim_05

V8 CPUおよびメモリプロファイリングには WebStorm IDE を使用できます。ガイドは次のとおりです: https:// www.jetbrains.com/help/webstorm/v8-cpu-and-memory-profiling.html

コードの一部を変更する必要はありません。 V8プロファイリングを実行し、ヒープスナップショットを取得して、有用なビューsnapshot diffs

デフォルトのWebstormガイドを使用できますが、Node 12の場合は バグ があり、CLIでエラーが発生します:bad option: --log-timer-events

ExpressおよびSocket.ioサーバーを使用するTypeScriptプロジェクトの場合、 ts-node-dev ツールを使用して、不明なすべてのパラメーターをts-nodeに渡し、次にnodeに渡します。したがって、ts-nodeを使用する場合も同じアプローチを適用できます。 --profおよび--logfile=logfile-profiling.log引数を手動で設定します。これが私の設定例です:

Run configuration

バグを回避するために(--prof =-logfileを手動で設定します)記録CPUプロファイリング情報を無効にし、有効にしますヒープスナップショットの取得を許可します

V8 Profiling configuration

次に、この構成のデバッグを実行します。アプリのデバッグ中に新しいヒープスナップショットを取得するには、左側のパネルの下部にあるアイコンをクリックします。

Heap snapshot icon in the bottom

ヒープスナップショットとCPUプロファイリングログはプロジェクトフォルダーに保存され、メニュー[ツール]> [V8プロファイリング]> [V8ヒープスナップショットの分析]から分析できます。 CPUログの場合:V8プロファイリングログを分析します。 CPUプロファイリングログは間隔を置いて作成されるため、アプリを実行して新しいログを同時に開くことができます。

2
miloshavlicek