Какая временная сложность (в нотации большого O) предусмотрена спецификацией ES6 для Keyed Collections (Set, Map, WeakSet и WeakMap)?
Мои ожидания, и я ожидаю , что от большинства разработчиков, является то , что спецификации и реализации будут использовать широко принятые производительным алгоритмы, в этом случае Set.prototype.has
, add
и delete
для всех быть O (1) в среднем случае. То же для Map
и Weak–
эквивалентов.
Для меня не совсем очевидно, требовалась ли временная сложность реализаций, например, в ECMAScript 2015 Language Specification - 6th Edition - 23.2 Set Objects .
Если я не понимаю это неправильно (а это, конечно, очень возможно), похоже, что спецификация ECMA требует, чтобы реализации (например Set.prototype.has
) использовали алгоритм линейного времени ( O (n) ). Мне показалось бы чрезвычайно удивительным, что более производительные алгоритмы не были бы предписаны или даже разрешены спецификацией, и мне было бы очень интересно объяснить, почему это так.