Los objetos no son tablas hash: cómo los mapas aceleran los lenguajes dinámicos

Objects, attributes, maps, oh my

En lenguajes como Python, Ruby o JavaScript, los objetos suelen modelarse como tablas hash que asocian nombres con valores, pero cada acceso a un atributo implica hashing, sondeos y cargas de memoria dependientes. La solución son los mapas (también llamados shapes o hidden classes): estructuras inmutables y persistentes que asignan a cada atributo un índice entero y un identificador estable del layout. Combinados con inline caches, permiten comprobar el mapa con una comparación de punteros y leer el atributo por índice, sin volver a hashear.

Este es un caso bastante claro en el que la tabla hash no tiene su propia fragmentación interna. Esto significa que literalmente cada operación `a.b` ejecuta cientos o miles de instrucciones de CPU, incluidas varias cargas de memoria dependientes. Eso no es bueno para el rendimiento.

Más de este día

2026-10-23