ES6 컬렉션: 선형 시간 복잡도는 필수인가요?
ES6 사양에는 Set, Map, WeakSet, WeakMap과 같은 키 컬렉션이 도입되었습니다. 이러한 컬렉션은 키를 기반으로 데이터를 저장하고 검색하는 효율적인 방법을 제공합니다. 그러나 다음과 같은 질문이 생깁니다. 사양에서는 이러한 컬렉션에 대한 작업에 대해 선형 시간 복잡도를 요구합니까?
선형 시간 복잡도 또는 Algo Choice Left Open
Set 및 Map 프로토타입에 대한 O(1) 액세스와 같이 널리 받아들여지는 성능 알고리즘과 달리 ES6 사양은 놀랍게도 선형 시간 알고리즘에 대한 문을 열어 두었습니다.
사양에서는 "Set 객체는 [메커니즘]을 사용하여 구현되어야 합니다. 평균적으로 준선형적인 액세스 시간을 제공합니다." 이 언어는 선형 시간 알고리즘을 포함하도록 해석될 수 있습니다. 그러나 명시적으로 이를 의무화하지는 않습니다.
마찬가지로, 사양은 로그 시간 복잡성을 제공하는 해시 테이블이나 균형 트리와 같은 보다 성능이 뛰어난 알고리즘을 배제하지 않습니다.
명시적인 성능 요구 사항
사양에 명시적인 성능 요구 사항이 없기 때문에 해당 사양에서 빠른 알고리즘의 우선 순위를 지정할 것으로 예상한 개발자들 사이에서 눈썹이 높아졌습니다.
그러나 다음과 같은 점에 유의하는 것이 중요합니다. 사양은 예측 가능한 반복 순서와 같은 관찰 가능한 의미에 중점을 둡니다. 효율적인 해시 기반 구현이 널리 기대되는 반면, 사양은 로그 시간 복잡성을 제공하는 트리와 같은 대체 데이터 구조를 허용합니다.
결론
ES6 사양은 다음과 같습니다. 키 컬렉션에 대한 작업에 대해 선형 시간 복잡성을 명시적으로 요구하지 않습니다. 선형 시간 알고리즘은 일부 구현에서 관찰될 수 있지만 사양에서는 보다 성능이 뛰어난 구현을 위한 여지를 남겨 둡니다. 개발자는 다양한 상황에서 이러한 수집 작업의 실제 시간 복잡성을 이해하려면 특정 브라우저 또는 런타임 문서를 참조해야 합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3