node_profiling_example
1.0.0
使用內置nodejs profiler的示例。我沒有提高性能,但我學到了一些東西。
使用LUNR在本地文件系統上構建文本文件的全文搜索索引。目前,索引1000個文件大約需要3秒鐘。
./profile.sh
這將輸出一個文件profile_output.txt 。有關如何解釋此文件,請參見下面的“讀取Nodejs Profiler輸出”部分。
我們可以看到,在“共享庫”中花費了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
使用此在線配置文件可視化器,似乎大多數對節點的調用都是構成構建器。 ADD,這有點令人困惑。我認為這可能是由於ASYNC readFile調用add,這是“責備” builder.add所花費的時間從文件系統中讀取文件。讓我們將兩個操作分開。

事實證明,讀取文件非常快。大多數應用程序時間都花在builder.add。但是,builder.add調用node.exe,除此之外,我們沒有獲得任何信息。
間諜JS有用嗎?我嘗試了幾分鐘,只能真正讓它告訴我“是的,建造者。add被稱為很多”。
有沒有辦法了解有關節點中的內容的更多信息?那是什麼?
默認的profiler是一個抽樣探測器,這意味著它在某些時間間隔記錄了當前的指令指針。
有許多工具,這裡有一個方便的在線:https://mapbox.github.io/flamebearer/#將profile_output.json文件拖到該站點中以可視化Profiler數據。