Hai câu lệnh về cơ bản thực hiện cùng một điều ở cấp API cốt lõi, đó là lấy con trỏ và chuyển đổi kết quả. Tuy nhiên, có một điểm khác biệt "cốt lõi" về hiệu suất:
-
.forEach()
sẽ chuyển dạng kết quả con trỏ "từng cái một" và xử lý hàm trình lặp mà nó được cung cấp. -
.fetch()
mặt khác, nhận được "mảng" từ con trỏ "tất cả cùng một lúc", có nghĩa là tất cả "trong bộ nhớ" trong một lần truy cập.
Vì vậy, không có vấn đề gì thực sự "nhanh hơn" khi thực hiện hoạt động "cốt lõi" là tìm nạp từ con trỏ của truy vấn. Tuy nhiên, việc không đánh giá "biểu thức" trên mỗi lần lặp con trỏ "có thể" nhanh hơn một chút, vì vậy .fetch()
có thể giành được một "chút ít" ở đây.
Tất nhiên, tất cả mọi thứ đều nằm trong bộ nhớ, vì vậy cần phải xem xét "chi phí" của việc làm đó. Đồng thời, tại thời điểm .fetch()
_.each()
vẫn chưa được xử lý, như người ta nói. "Bạn" đạt được "gì khi đu dây mà bạn có thể" thả lỏng "trên đường vòng" .
Nếu không có điểm chuẩn đầy đủ của các trường hợp cụ thể, "thời gian" có thể tương tự nhau. Và điểm chuẩn chung chung sẽ vô dụng trừ khi nó áp dụng cụ thể kích thước của tập dữ liệu mà bạn đang làm việc.
Do đó, trường hợp chung xuất hiện, "Về cùng một" , Tuy nhiên, sử dụng .fetch()
sẽ ngốn nhiều bộ nhớ hơn hơn là chỉ lặp lại một con trỏ ngay từ đầu.