Contoh penggunaan profiler nodeJs bawaan. Saya tidak meningkatkan kinerja, tetapi saya belajar beberapa hal.
Membangun indeks pencarian teks lengkap file teks pada sistem file lokal, menggunakan Lunr. Saat ini dibutuhkan sekitar 3 detik untuk mengindeks 1000 file.
./profile.sh
Ini menghasilkan file profile_output.txt . Lihat bagian 'Membaca Nodejs Profiler Output' di bawah ini untuk cara menafsirkan file ini.
Kita dapat melihat bahwa 81% dari waktu proses dihabiskan di 'perpustakaan bersama', 77/81 dari itu adalah 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
Menggunakan visualiser profil online ini, tampaknya sebagian besar panggilan ke simpul adalah karena builder.add, yang sedikit membingungkan. Saya pikir ini mungkin karena penambahan panggilan readfile async, yaitu 'menyalahkan' builder.add untuk waktu yang dihabiskan untuk membaca file dari sistem file. Mari kita pisahkan kedua operasi.

Ternyata file membaca sangat cepat. Mayoritas waktu aplikasi dihabiskan di builder.add. Namun, builder.add panggilan node.exe, di luar yang kami tidak mendapatkan informasi.
Apakah Spy-Js berguna? Saya mencobanya selama beberapa menit, dan hanya bisa benar -benar memberitahuku 'ya, Builder.add banyak disebut'.
Apakah ada cara untuk melihat lebih banyak tentang apa yang dipanggil? Dan dengan apa?
Profiler default adalah profiler pengambilan sampel, yang berarti mencatat penunjuk instruksi saat ini pada interval tertentu.
Ada sejumlah alat, inilah yang online yang praktis: https://mapbox.github.io/flamebearer/# Seret file profile_output.json ke situs itu untuk memvisualisasikan data profiler.