Exemple d'utilisation du profileur NodeJS intégré. Je n'ai pas amélioré les performances, mais j'ai appris certaines choses.
Construire un index de recherche en texte intégral des fichiers texte sur un système de fichiers local, en utilisant LUNR. Il faut actuellement environ 3 secondes pour indexer 1000 fichiers.
./profile.sh
Cela stimule un profile_output.txt de fichier_output.txt. Voir la section «Reading the Nodejs Profiler Output» ci-dessous pour interpréter ce fichier.
Nous pouvons voir que 81% du temps de processus est passé dans des «bibliothèques partagées», 77/81 de celle-ci étant 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
En utilisant ce visualiseur de profil en ligne, il semble que la plupart des appels à nœud soient dus à Builder.Add, ce qui est un peu déroutant. Je pense que cela peut être dû à l'addition d'appels en lecture asynchrone, qui est «blâmer» builder.add pour le temps passé à lire des fichiers à partir du système de fichiers. Séplions les deux opérations.

Il s'avère que la lecture des fichiers est très rapide. La majorité du temps de l'application est consacrée à Builder.add. Cependant, Builder.add appelle Node.exe, au-delà de laquelle nous n'obtenons aucune information.
Spy-js est-il utile? Je l'ai essayé pendant quelques minutes, et je n'ai vraiment pu le faire que "oui, Builder.add s'appelle beaucoup".
Existe-t-il un moyen d'en savoir plus sur ce que l'appel dans le nœud est appelé? Et par quoi?
Le profileur par défaut est un profileur d'échantillonnage, ce qui signifie qu'il enregistre le pointeur d'instruction actuel à certains intervalles.
Il existe un certain nombre d'outils, voici un en ligne pratique: https://mapbox.github.io/flamebearer/# glisser le fichier profile_output.json dans ce site pour visualiser les données du profil.