Node-API performance
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- JavaScript
- Star
- 122k
- Fork
- 37.3k
- Merge trung bình
- 4 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 283
Mô tả
What is the problem this feature will solve?
Improve performance when creating large V8 objects which is critical since these must always be created on the main thread, blocking the event loop.
Currently, the overhead of each method is very significant - especially for the primitive operations such as simply setting a property.
As a very typical example of the current problem, you can consider these two methods for setting a property on an object:
napi_status napi_set_property(napi_env env,
napi_value object,
napi_value key,
napi_value value);
napi_status napi_set_named_property(napi_env env,
napi_value object,
const char* utf8name,
napi_value value);
Naively, one expects that using the first one will be faster when the key is already UTF-16. However calling this method requires to first call napi_create_string_utf16 and the combined overhead of the two calls offsets the single call of the second method when the key is not very long (which is usually the case).
What is the feature you are proposing to solve the problem?
Step 1: (not needed, see below)napi_set_named_property that takes UTF-16
Step 2: Methods that can create in one call a whole array/object from a C data structure - especially ones for strings already encoded in UTF-16
What alternatives have you considered?
No response
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với các entry point của Node-API là napi_set_property, napi_set_named_property và napi_create_string_utf16, sau đó xem xét cách các đối tượng V8 lớn và các thao tác thuộc tính nguyên thủy được tạo trên main thread. Issue không nêu tên file hoặc test; để hoàn thành, cần có phạm vi API được xác định cho việc tạo hàng loạt array/object dựa trên dữ liệu C, cùng bằng chứng cho thấy các thao tác được đề xuất làm giảm overhead tạo đối tượng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp, javascript, node.js
- Lĩnh vực
- api, backend
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 35/100