مثال على استخدام nodejs المدمج. لم أحسن الأداء ، لكنني تعلمت بعض الأشياء.
بناء فهرس البحث الكامل للملفات النصية على نظام الملفات المحلي ، باستخدام LUNR. يستغرق حاليًا حوالي 3 ثوانٍ لفهرسة 1000 ملف.
./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
باستخدام مرئيات الملف الشخصي عبر الإنترنت هذا ، يبدو أن معظم المكالمات إلى العقدة ترجع إلى Builder.add ، وهو مربك بعض الشيء. أعتقد أن هذا قد يكون بسبب Addfile readfile Add ، والذي هو "إلقاء اللوم" على Builder.Add للوقت الذي يقضيه في قراءة الملفات من نظام الملفات. دعونا نفصل العمليتين.

اتضح أن قراءة الملفات سريعة للغاية. يتم إنفاق غالبية وقت التطبيق في builder.add. ومع ذلك ، فإن builder.add يستدعي node.exe ، والتي لا نحصل عليها أي معلومات.
هل Spy-JS مفيد؟ جربته لبضع دقائق ، ولم أتمكن إلا من الحصول عليه ليخبرني "نعم ، الباني. Add يسمى كثيرًا".
هل هناك طريقة لمعرفة المزيد حول ما يتم استدعاؤه في العقدة؟ وماذا؟
Profiler الافتراضي هو profiler أخذ العينات ، مما يعني أنه يسجل مؤشر التعليمات الحالي على فترات معينة.
هناك عدد من الأدوات ، إليك واحدة مفيدة عبر الإنترنت: https://mapbox.github.io/flamebearer/# اسحب ملف profile_output.json إلى هذا الموقع لتصور بيانات profiler.