Javascript ES6 complessità computazionale / temporale delle collezioni

Quale complessità temporale (in notazione big-O) viene fornita dalla specifica ES6 per le raccolte con chiave (Set, Map, WeakSet e WeakMap)?

La mia aspettativa, e mi aspetto che la maggior parte degli sviluppatori, sia che le specifiche e le implementazioni utilizzino algoritmi performant ampiamente accettati , nel qual caso Set.prototype.has , add e delete to be O (1) nel caso medio. Lo stesso per la Map e Weak– equivalenti Weak– .

Non è del tutto chiaro per me se la complessità temporale delle implementazioni è stata richiesta, ad esempio in ECMAScript 2015 Language Specification – 6th Edition – 23.2 Set Objects .

A meno che non l’abbia frainteso (ed è certamente molto probabile che lo faccia), sembra che le specifiche dell’ECMA Set.prototype.has che le implementazioni (es. Set.prototype.has ) usino un algoritmo di tempo lineare ( O (n) ). Mi sembrerebbe estremamente sorprendente che gli algoritmi più performanti non siano autorizzati o addirittura permessi dalle specifiche, e sarei molto interessato a spiegare perché questo è il caso.