Tecnología

Inicio

El rendimiento de una matriz asociativa en PHP

El rendimiento de una matriz asociativa en PHP


PHP es un lenguaje basado en servidor para crear aplicaciones Web interactivas y representar el contenido de usuario bajo demanda. Es compatible con una variedad de clases de colección de datos en su constructo matriz, incluidas las matrices indexadas y matrices asociativas. Con un gran número de usuarios, el rendimiento de su código puede ser un problema. Aunque las matrices asociativas no requieren considerable sobrecarga de la CPU, que necesitan más memoria para almacenar en la memoria RAM como su programa se está ejecutando.

Las matrices indexadas

Una matriz indexada estándar en PHP y otros lenguajes contiene una serie de índices de valor posteriores asignadas a los valores de datos. Un valor de datos se accede por referencia al índice, o la posición en la matriz.

$ My_array = array (1, 2, 3, 4, 5);

Acceso al elemento "$ my_array [0]" devuelve el valor 1. Los conjuntos indexados son los mejores para almacenar y acceder a datos estructurados. Sería ineficiente para hacer lo siguiente, ya que podría llenar los vacíos en los valores del índice, tomando una gran cantidad de memoria:

$ My_array [] = 7;
$ My_array [13] = 5;
$ My_array [76] = -4;

Las matrices asociativas

A diferencia de las matrices indexadas, PHP arrays asociativos contienen una serie de pares de clave y valor. Los valores de datos se accede haciendo referencia a la clave que puede ser una cadena única o un valor numérico. El ejemplo anterior puede ser ineficaz mejor escrito como una matriz asociativa:

$ My_array (0 => 5, 13 => 5, 75 => -4);
$ My_array ( "uno" => 1, "dos" => 2, "diecisiete" => 17);

rendimiento de la CPU

PHP está optimizado para el procesamiento de cadenas. Tener una cadena como la clave de una matriz asociativa no produce tanta sobrecarga. Cuando se accede a un elemento en una matriz asociativa en PHP, la matriz no se busca de principio a fin de determinar si alguna de las teclas partido. En su lugar, una llave en una matriz asociativa se asigna a un valor del índice, sin sobrecarga adicional en el tiempo de consulta sobre matrices indexadas.

Rendimiento de la memoria

Desde PHP matrices asociativas almacenar un par clave-valor, frente a tan sólo un valor, requieren sobrecarga de memoria adicional, el programa utiliza el espacio en la memoria RAM durante la ejecución, si se compara con matrices indexadas. Esta memoria adicional es normalmente insignificante a menos que estés usando matrices muy grandes. En este caso, puede ser prudente para dividir matrices muy grandes en un subconjunto de matrices que se puede acceder cuando sea necesario.