Tengo que descubrir la mejor manera de almacenar objetos cuando uso un número entero o BigInteger como clave. Esto me deja con 3 opciones para lo que me importa: objetos, mapas o arreglos dispersos.
Creo que sé que los objetos en v8/JavaScript se implementan como tablas hash mediante sondeo cuadrático. Así que hay que considerar. Leí brevemente que v8 se optimiza para matrices dispersas (digamos que inserto 1 millón de elementos incrementando una clave entera, luego elimino 900k de ellos). Preguntarse si las matrices dispersas serían una optimización en este caso sobre los objetos, almacenando una clave entera. ¿Cómo se implementan las matrices dispersas bajo el capó en v8, para que pueda determinar si contendría optimizaciones?
Pero no creo que las matrices puedan almacenar claves BigInt , por lo que me dejaría con objetos frente a mapas. La segunda parte de la pregunta es cómo se implementan los mapas bajo el capó en v8. Si almacené una clave entera en una matriz dispersa frente a un mapa, ¿cuáles serían las compensaciones? Si almacené una clave BigInt en un objeto frente a un mapa, ¿cuál sería la compensación? Las claves de objeto serializarían el BigInt en una cadena, luego usarían el algoritmo de sondeo cuadrático para insertarlo/encontrarlo/eliminarlo. Pero, ¿qué harían los mapas?
Básicamente, ¿cómo se comparan los mapas, las matrices dispersas y los objetos? ¿Cuándo está más optimizado con respecto a mi caso de uso entero/bigint?