Để thêm một số gia vị mang lại Hiệu suất. Kiểm tra chủ đề này dưới đây
https://github.com/googleapis/google-api-nodejs-client/issues/375
Việc sử dụng toán tử xóa có tác động tiêu cực đến hiệu suất đối với mẫu lớp ẩn V8. Nói chung, bạn không nên sử dụng nó.
Ngoài ra, để loại bỏ các thuộc tính liệt kê của riêng đối tượng, chúng ta có thể tạo một bản sao đối tượng mới mà không có các thuộc tính đó (ví dụ sử dụng lodash):
_.omit (o, 'prop', 'prop2')
Hoặc thậm chí xác định giá trị thuộc tính thành null hoặc không xác định (hoàn toàn bị bỏ qua khi tuần tự hóa thành JSON):
o.prop = không xác định
Bạn cũng có thể sử dụng cách phá hủy
const {remov1, remov2, ...new} = old;
old = new;
Và một ví dụ thực tế hơn:
this._volumes[this._minCandle] = undefined;
{
const {[this._minCandle]: remove, ...rest} = this._volumes;
this._volumes = rest;
}
Như bạn thấy, bạn có thể sử dụng [somePropsVarForDynamicName]: scopeVarName
cú pháp cho tên động. Và bạn có thể đặt tất cả trong dấu ngoặc (khối mới) để phần còn lại sẽ được thu gom sau nó.
Đây là một bài kiểm tra:
thi hành:
Hoặc chúng ta có thể đi với một số chức năng như
function deleteProps(obj, props) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
cho chữ viết
function deleteProps(obj: Object, props: string[]) {
if (!Array.isArray(props)) props = [props];
return Object.keys(obj).reduce((newObj, prop) => {
if (!props.includes(prop)) {
newObj[prop] = obj[prop];
}
return newObj;
}, {});
}
Sử dụng:
let a = {propH: 'hi', propB: 'bye', propO: 'ok'};
a = deleteProps(a, 'propB');
a = deleteProps(a, ['propB', 'propO']);
Bằng cách này, một đối tượng mới được tạo ra. Và tài sản nhanh chóng của đối tượng được giữ. Cái nào có thể là quan trọng hoặc quan trọng. Nếu ánh xạ và đối tượng sẽ được truy cập nhiều lần.
Ngoài ra, liên kết undefined
có thể là một cách tốt để đi cùng. Khi bạn có đủ khả năng. Và đối với các phím, bạn cũng có thể kiểm tra giá trị. Ví dụ: để lấy tất cả các khóa hoạt động, bạn làm như sau:
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k] !== undefined);
const allActiveKeys = Object.keys(myObj).filter(k => myObj[k]);
Undefined không phù hợp với danh sách lớn. Hoặc phát triển theo thời gian với nhiều đạo cụ xuất hiện. Vì việc sử dụng bộ nhớ sẽ tiếp tục tăng và sẽ không bao giờ được xóa sạch. Vì vậy, nó phụ thuộc vào cách sử dụng. Và chỉ tạo một đối tượng mới có vẻ là cách tốt.
Sau đó, ý Premature optimization is the root of all evil
chí bắt đầu. Vì vậy, bạn cần phải nhận thức được sự đánh đổi. Và những gì cần thiết và những gì không.
Lưu ý về _.omit () từ lodash
Nó bị xóa khỏi phiên bản 5. Bạn không thể tìm thấy nó trong repo. Và đây là một vấn đề nói về nó.
https://github.com/lodash/lodash/issues/2930
v8
Bạn có thể kiểm tra đây là một bài đọc tốt https://v8.dev/blog/fast-properties