Welche zeitliche Komplexität (in Big-O-Notation) bietet die ES6-Spezifikation für die Schlüsselsammlungen (Set, Map, WeakSet und WeakMap)?
Meine Erwartung, und ich erwarte , dass die meisten Entwickler, ist , dass die Spezifikationen und Implementierungen verwenden würden weitgehend akzeptiert performant Algorithmen, wobei in diesem Fall Set.prototype.has
, add
und delete
für alle O (1) im durchschnittlichen Fall sein. Gleiches gilt für die Map
und Weak–
Äquivalente.
Es ist mir nicht ganz klar, ob die zeitliche Komplexität der Implementierungen vorgeschrieben war, z. B. in der ECMAScript 2015-Sprachspezifikation - 6. Ausgabe - 23.2 Objekte festlegen .
Sofern ich es nicht falsch verstehe (und es ist sicherlich sehr wahrscheinlich, dass ich es tue), sieht es so aus, als ob die ECMA-Spezifikation vorschreibt, dass die Implementierungen (z. B. Set.prototype.has
) einen linearen Zeitalgorithmus ( O (n) ) verwenden sollen. Es würde mich außerordentlich überraschen, dass leistungsfähigere Algorithmen von der Spezifikation nicht vorgeschrieben oder sogar zugelassen würden, und ich wäre sehr an einer Erklärung interessiert, warum dies der Fall ist.