Resumir
Si puede usar Map, puede usar Map. Object no tiene una ventaja obvia sobre Map.
- La cantidad de datos es grande y Map se usa para escritura frecuente.
- Hay un requisito para que la orden de escritura use Map
analizar
Objeto
V8 tiene métodos de optimización para el procesamiento de Objetos;
Cuando hay pocas propiedades de objeto o la clave es de tipo numérico, se utilizan propiedades rápidas y las propiedades rápidas se almacenan en una estructura lineal.
Cuando haya más atributos, para garantizar la eficiencia de agregar y eliminar, se utilizarán atributos lentos y el contenido de los atributos se almacenará en forma de pares clave-valor.
Mapa
La estructura de almacenamiento de Map es hashMap
Comparado
- La clave de Objeto solo puede ser un número, cadena o Símbolo, la clave de Mapa puede ser de cualquier tipo;
- El mapa es un objeto iterativo; el objeto no se puede iterar;
- Map registrará el orden de escritura, Object serializará la clave y la ordenará según el diccionario;
- El mapa tiene varias funciones de operación integradas, el objeto no;
Comparación de operaciones de lectura y escritura
escribe
// 先定义一个数量上限\
const up = 9999
var mt1 = performance.now()
var map = new Map()
for(var i = 0; i < up; i++) {
map.set(`f${i}`, {a: i, children: { a: i }})
}
console.log(` Map: `, performance.now() - mt1)
var ot1 = performance.now()
var obj = {}
for (var i = 0; i < up; i++) {
obj[`f${i}`] = {b: i, children: {a: i}}
}
console.log('Object: ', performance.now() - ot1)
复制代码
Cuando configuro el valor de 499999
hasta , la velocidad de escritura de Objeto comienza a estabilizarse y tarda más que la de Mapa. Cuando es menor que 499999
la velocidad del objeto, la relación es mayor, pero la diferencia no es obvia.
leer
// 访问
for (var i = 0; i < up; i++) {
map.get(`f${i}`)
}
复制代码
En términos de velocidad de lectura, 159999
cuando se establece el valor de arriba, la velocidad de lectura de Objeto será estable y más lenta que la de Mapa.
Eliminar
// 删除
for(var i = 0; i < up; i++) {
map.delete(`f${i}`)
}
复制代码
En la eliminación, configuro el valor de up para que 199999
sea estable y más lento que la eliminación de Map.
Por lo tanto, en términos de rendimiento, cuando la velocidad de agregar, eliminar y leer es muy pequeña, el rendimiento de Object puede ser ligeramente mejor o incluso no ser obvio. Cuando el número es muy grande, Map funcionará mejor que Object.
Enlace de referencia: La verdad del escenario de la aplicación Map es...