Đặc điểm kỹ thuật ES6 cung cấp độ phức tạp về thời gian nào (trong ký hiệu big-O) cho Bộ sưu tập có khóa (Set, Map, WeakSet và WeakMap)?
Kỳ vọng của tôi và tôi mong đợi của hầu hết các nhà phát triển là các thông số kỹ thuật và triển khai sẽ sử dụng các thuật toán hiệu suất được chấp nhận rộng rãi , trong trường hợp đó Set.prototype.has
, add
và delete
tất cả đều là O (1) trong trường hợp trung bình. Tương tự đối với Map
và Weak–
tương đương.
Tôi không hoàn toàn rõ ràng liệu độ phức tạp về thời gian của việc triển khai có được yêu cầu hay không, ví dụ như trong Đặc tả ngôn ngữ ECMAScript 2015 - Phiên bản thứ 6 - 23.2 Đặt đối tượng .
Trừ khi tôi hiểu sai (và chắc chắn là tôi có thể làm vậy), có vẻ như thông số kỹ thuật ECMA yêu cầu việc triển khai (ví dụ Set.prototype.has
) phải sử dụng thuật toán thời gian tuyến tính ( O (n) ). Tôi sẽ cực kỳ ngạc nhiên rằng các thuật toán hiệu suất hơn sẽ không được yêu cầu hoặc thậm chí cho phép bởi thông số kỹ thuật và tôi sẽ rất quan tâm đến lời giải thích tại sao lại như vậy.