recorrer objetos objeto lista eliminar elemento buscar array agregar javascript dictionary hash

objetos - Rendimiento de la búsqueda de claves en el objeto JavaScript



object object javascript (2)

Acabo de leer esta pregunta: ¿hay diccionarios en javascript como python?

Una de las respuestas dice que puedes usar objetos JavaScript como diccionarios de Python. ¿Es eso cierto? ¿Cuál es el rendimiento de una búsqueda de clave en un objeto? ¿Es O (1)? ¿Agregar una clave al objeto también es tiempo constante (hash)?


Los documentos de diseño de V8 implican que las búsquedas serán al menos tan rápidas, si no más rápidas:

La mayoría de los motores de JavaScript utilizan una estructura de datos tipo diccionario como almacenamiento para las propiedades de los objetos : cada acceso a las propiedades requiere una búsqueda dinámica para resolver la ubicación de la propiedad en la memoria. Este enfoque hace que el acceso a las propiedades en JavaScript sea mucho más lento que el acceso a variables de instancia en lenguajes de programación como Java y Smalltalk. En estos lenguajes, las variables de instancia se ubican en desplazamientos fijos determinados por el compilador debido al diseño del objeto fijo definido por la clase del objeto. El acceso es simplemente una cuestión de carga o almacenamiento de memoria, que a menudo requiere solo una instrucción.

Para reducir el tiempo requerido para acceder a las propiedades de JavaScript, V8 no utiliza la búsqueda dinámica para acceder a las propiedades. En cambio, V8 crea dinámicamente clases ocultas detrás de las escenas. [...] En V8, un objeto cambia su clase oculta cuando se agrega una nueva propiedad.

Sin embargo, parece que agregar una nueva clave podría ser un poco más lento debido a la creación de clases ocultas.


Sí, puede suponer que agregar una clave y luego usarla para acceder son efectivamente operaciones de tiempo constante.

Debajo del capó, el motor JS puede aplicar algunas técnicas para optimizar las búsquedas posteriores, pero a los efectos de cualquier algoritmo, puede suponer O (1).