-
Reemplaza a los ES6 Maps con límite de 16 millones: puede almacenar más de 1,000 millones de claves
-
Desarrollada en C++ e incluye un wrapper para Node.js
→ Puede leer/escribir 500 mil claves por segundo
→ Bajo overhead de memoria
→ No se almacena en el heap de V8
→ Soporta buffers, cadenas, números, booleanos y objetos
-
Compatible de forma básica con la API de ES6 Map: get, set, has, ddelete, clear, length
-
Internamente usa la técnica de Separate Chaining: índice + lista enlazada
2 comentarios
Uff, ¿habrá alguna razón para usar un Map tan grande?
En la práctica, si metes más de 2^24 claves en un
Mapde Node.JS, se produce un error de heap.Esto no es un bug, sino un límite definido por la implementación, y hay una respuesta de un desarrollador de V8 sobre esto en StackOverflow.
https://stackoverflow.com/a/54466812/166418
El
FixedArrayque almacena elMaptiene un tamaño máximo de 1GBEn un sistema de 64 bits, 1GB / 8B = 2^30 / 2^3 = 2^27 ~= 134M, así que
FixedArraypuede almacenar como máximo 134 millones de elementosUn
Mapnecesita 3 elementos por entrada (key,value,next bucket link), y la carga máxima está limitada al 50% para evitar colisiones de buckets.→ Como la capacidad debe ser una potencia de 2, si redondeas hacia abajo al siguiente exponente en el cálculo 2^27 / (3 * 2), el valor máximo es 2^24