Коллекции ES6: обязательна ли линейная временная сложность?
Спецификация ES6 вводит коллекции с ключами, такие как Set, Map, WeakSet и WeakMap. Эти коллекции предоставляют эффективные способы хранения и извлечения данных на основе ключей. Однако возникает вопрос: предписывает ли спецификация линейную временную сложность для операций с этими коллекциями?
Линейная временная сложность или выбор алгоритма оставлены открытыми
Несмотря на ожидания Широко распространенные высокопроизводительные алгоритмы, такие как доступ O(1) для прототипов Set и Map, спецификация ES6 неожиданно оставляет дверь открытой для алгоритмов с линейным временем.
Спецификация гласит, что «объекты Set должны быть реализованы с использованием [механизмов] что в среднем обеспечивает сублинейное время доступа». Этот язык можно интерпретировать как включающий алгоритмы с линейным временем. Однако они явно не предписываются.
Аналогично, спецификация не исключает более производительных алгоритмов, таких как хеш-таблицы или сбалансированные деревья, которые обеспечивают логарифмическую временную сложность.
Отсутствие Явные требования к производительности
Отсутствие явных требований к производительности в спецификации вызвало удивление среди разработчиков, которые ожидали, что спецификация будет отдавать приоритет быстрым алгоритмам.
Однако важно отметить, что спецификация фокусируется на наблюдаемой семантике, такой как предсказуемый порядок итерации. Хотя широко ожидается эффективная реализация на основе хэша, спецификация допускает альтернативные структуры данных, такие как деревья, которые предлагают логарифмическую временную сложность.
Заключение
Спецификация ES6 делает это не указывать явно линейную сложность времени для операций с коллекциями с ключами. Хотя в некоторых реализациях можно наблюдать алгоритмы с линейным временем, спецификация оставляет место для более производительных реализаций. Разработчикам следует обратиться к документации конкретного браузера или среды выполнения, чтобы понять реальную временную сложность этих операций сбора данных в различных контекстах.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3