Actualmente estoy creando una aplicación basada en web (= JavaScript) que usa muchos "puntos" (= vectores de tamaño pequeño y fijo). Hay básicamente dos maneras obvias de representarlos:¿Cuál es la forma más eficiente de manejar puntos/vectores pequeños en JavaScript?
var pointA = [ xValue, yValue ];
y
var pointB = { x: xValue, y: yValue };
Así traducir mi punto un poco sería el resultado:
var pointAtrans = [ pointA[0] + 3, pointA[1] + 4 ];
var pointBtrans = { x: pointB.x + 3, pointB.y + 4 };
Ambos son fáciles de manejar desde un programador punto de vista (la variante del objeto es un poco más legible, especialmente porque trato principalmente con datos 2D, rara vez con 3D y apenas con 4D, pero nunca más. Siempre cabe en x, y, z y w)
Pero mi pregunta es ahora:
¿Cuál es la forma más eficiente desde la perspectiva del lenguaje, teóricamente y en implementaciones reales?
¿Cuáles son los requisitos de memoria?
¿Cuáles son los costos de instalación de una matriz frente a un objeto?
...
Mis navegadores de destino son FireFox y los basados en Webkit (Cromo, Safari), pero no estaría de más tener un gran (= rápido) experiencia bajo IE y Opera, así ...
Mi sensación dice que los objetos consumen menos memoria: Un objeto es la estructura básica de datos en JS. Las matrices se construyen sobre objetos y proporcionan métodos adicionales. Pero la diferencia es probablemente insignificante. –
Se almacenan métodos adicionales en 'Array.prototype'. Ninguna matriz los mantiene directamente. – galambalazs