組み込みのNodeJSプロファイラーを使用する例。パフォーマンスは向上しませんでしたが、いくつかのことを学びました。
LUNRを使用して、ローカルファイルシステム上のテキストファイルのフルテキスト検索インデックスを構築します。現在、1000のファイルのインデックスを作成するのに約3秒かかります。
./profile.sh
これにより、ファイルprofile_output.txtが出力されます。このファイルを解釈する方法については、以下の「Nodejsプロファイラー出力の読み取り」セクションを参照してください。
プロセス時間の81%が「共有ライブラリ」に費やされ、その77/81はnode.exeであることがわかります。
[Summary]:
ticks total nonlib name
315 18.6% 96.6% JavaScript
0 0.0% 0.0% C++
80 4.7% 24.5% GC
1369 80.8% Shared libraries
11 0.6% Unaccounted
[Shared libraries]:
ticks total nonlib name
1303 76.9% C:Program Filesnodejsnode.exe
65 3.8% C:WINDOWSSYSTEM32ntdll.dll
1 0.1% C:WINDOWSSystem32KERNEL32.DLL
このオンラインプロファイルビジュアリザーを使用して、ノードへの呼び出しのほとんどはBuilder.Addによるものであるようです。これは少し混乱しています。これは、ファイルシステムからファイルを読むのに費やした時間については、Async ReadFile Calling Addによるものかもしれません。 2つの操作を分離しましょう。

ファイルの読み取りは非常に高速であることがわかります。アプリの時間の大部分はBuilder.Addで費やされています。ただし、Builder.Addはnode.exeを呼び出しますが、それを超えて情報はありません。
SPY-JSは便利ですか?私はそれを数分間試しましたが、「はい、Builder.Addはたくさん呼ばれています」と言うことしかできませんでした。
ノード内のものが呼ばれていることについてもっと見る方法はありますか?そして何によって?
デフォルトのプロファイラーはサンプリングプロファイラーです。つまり、特定の間隔で現在の命令ポインターを記録します。
多くのツールがあります。ここには、便利なオンラインのツールがあります:https://mapbox.github.io/flamebearer/# profile_output.jsonファイルをそのサイトにドラッグして、プロファイラーデータを視覚化します。