Bạn đang tải bất kỳ module đã xây dựng phụ thuộc?
Về cơ bản là "Không xác định" có nghĩa là "không được tính tiền" (hãy kiểm tra tickprocessor.js
để được giải thích thêm). Ví dụ: GC sẽ in các thông báo như "nhặt rác, bắt đầu, ..." nhưng điều đó không được công nhận bởi logreader.js
.
Sẽ giúp bạn biết thư viện hồ sơ bạn đang sử dụng để phân tích cú pháp tệp v8.log
.
Cập nhật
Gói node-tick
chưa được cập nhật trong hơn một năm và có lẽ còn thiếu rất nhiều prof
lệnh gần đây. Hãy thử sử dụng node-profiler để thay thế. Nó được tạo bởi một trong những người duy trì nút. Và nếu bạn muốn kết quả tốt nhất tuyệt đối, bạn sẽ cần phải xây dựng nó bằng cách sử dụng node-gyp
.
Cập nhật
tôi đã phân tích các v8.log
đầu ra bằng cách sử dụng mới nhất từ node-profiler (tin mới nhất về master
, không thẻ mới nhất) và đăng các kết quả tại http://pastebin.com/pdHDPjzE
Cho phép tôi chỉ ra một vài mục nhập chính xuất hiện khoảng một nửa xuống:
[GC]:
ticks total nonlib name
2063 26.2%
[Bottom up (heavy) profile]
6578 83.4% c:\node\node.exe
1812 27.5% LazyCompile: ~parse native json.js:55
1811 99.9% Function: ~<anonymous> C:\workspace\repositories\asyncnode_MySQL\lib\MySQL_DB.js:41
736 11.2% Function: ~Buffer.toString buffer.js:392
Vì vậy, 26,2% của tất cả các loại tập lệnh đã được sử dụng trong thùng rác col lection. Đó là cao hơn nhiều so với nó nên được. Mặc dù nó tương quan tốt với bao nhiêu thời gian được chi tiêu trên Buffer.toString
. Nếu có nhiều bộ đệm đang được tạo sau đó được chuyển thành chuỗi, cả hai sẽ cần phải được gc'd khi chúng rời khỏi phạm vi.
Ngoài ra, tôi rất tò mò vì sao nên dành nhiều thời gian ở số LazyCompile
cho json.js
. Hoặc nhiều hơn như vậy, tại sao json.js
thậm chí là cần thiết trong một ứng dụng nút?
Để giúp bạn điều chỉnh hiệu suất ứng dụng của mình, tôi bao gồm một vài liên kết bên dưới cung cấp hướng dẫn tốt về việc cần làm và tìm kiếm.
trượt boong đẹp với những điều cơ bản:
https://mkw.st/p/gdd11-berlin-v8-performance-tuning-tricks/#1
Thêm ví dụ tiên tiến của kỹ thuật tối ưu hóa:
http://floitsch.blogspot.com/2012/03/optimizing-for-v8-introduction.html
sử dụng tốt hơn đóng cửa:
http://mrale.ph/blog/2012/09/23/grokking-v8-closures-for-fun.html
Bây giờ như xa như lý do tại sao bạn không thể đạt được cùng một đầu ra.Nếu bạn đã xây dựng và sử dụng node-profiler và được cung cấp nprof
từ master
và nó vẫn không hoạt động thì tôi cho rằng nó có liên quan đến việc sử dụng Windows. Hãy suy nghĩ về việc nộp một lỗi trên GitHub và xem liệu anh ta có giúp bạn không.
Tôi đang sử dụng gói 'đánh dấu' npm – coen
Tôi đã thử sử dụng https://github.com/bnoordhuis/node-profiler, nhưng kết quả vẫn giữ nguyên. – coen
@coen Bạn có thể ghi đè hoặc tệp v8.log của mình không. Nó sẽ là cách dễ nhất để tôi giúp bạn. –