Comparativa: Variables, constantes y arrays en PHP

Bueno, ya que no pude encontrar nada en Google que me dijera a ciencia cierta que si era más eficiente usar constantes, variables o arrays en mis scripts, más que nada para todo lo que sea un valor “inmutable” a lo largo del script, decidí hacer una comparativa y acá están los resultados:

 

Las pruebas

Primero generé tres archivos de pruebas, un array.php, un constantes.php, y otro variables.php. Cada archivo tenía 5000 líneas en los que asignaba a una variable, array o constante, una cadena md5 generada aleatoriamente. Ej.:

variables.php (archivo de 230.404 bytes)

$V00000 = '4ed13b18242b1d9e03bbaa5fee7fdf36';

$V05000 = 89f157169de8d8f1daeac6c5cbee5204;

constantes.php (archivo de 270.412 bytes)

define('C00000', '90b6d2381a3dfc0fe7e58243671972ef');

define(’C05000′, 89f157169de8d8f1daeac6c5cbee5204);

array.php (archivo de 234.295 bytes)

$A[0] = '25dd49dbf3df44d0222f5ab74123a808';

$A[5000] = 89f157169de8d8f1daeac6c5cbee5204;

Resultados: Uso de memoria

Como me lo esperaba, las constantes usan muchísimo menos memorias que los arrays y las variables. Al cargar los distintos archivos, la memoria usada fué:

 

  • constantes.php = 212.824
  • array.php = 525.584
  • variables.php = 565.144

Me sorprendió ver que se usara menos memoria para el array, que para las variables. El gráfico:

Memoria utilizada por las variables, constantes y array

Resultados: Tiempo de ejecución

Hice un promedio entre las 10 ejecuciones de los scripts, y tengo que:

  • variables.php = 0,063605547
  • array.php = 0,073364019
  • constantes.php = 0,087763548

Como se puede apreciar, la asignación de variables es más rápida que la asignación en un array y la definición de constantes. La explicación debe radicar en que para definir una constante en PHP, debemos llamar a la función define, mientras que las variables se asignan directamente.

Conclusiones

Bueno, no estaba equivocado en utilizar constantes en mis scripts por lo que veo. Me entró la duda porqué estoy metiéndome a full con WordPress y usan muy pocas constantes y muchas variables, incluso para lo que llamamos variables de configuración.

Me quedaría ver como es la operatoria, o sea los tiempos de acceso a las variables o las constantes, para realizar operaciones o concatenaciones. Ya para otra vez será. :)

9 Comentarios en “Comparativa: Variables, constantes y arrays en PHP”

Gravatar de Alberto

Alberto
13 de Junio de 2006 a las 5:51 pm    

Si no entendes la diferencia entre usar un array, constante o variable estás frito…No es una cuestión de gustos, es una cuestion de efectividad..sos un gil!

Gravatar de pablo

pablo
13 de Junio de 2006 a las 6:18 pm    

Estimado Alberto: siempre se dice que antes de comentar, tenés que leer. Si hubieras leído, te darías cuenta que este post habla de la diferencias de rendimientos en cuándo al uso de variables, arrays y constantes en PHP. He encontrado varias artículos en la red en los que hablan que el uso de variables es más eficiente que constantes y todo eso, asi que para sacarme las dudas, me puse a trabajar en un pequeño benchmark.

Y decidí compartirlo con todos, para que si hay otro que tenga la duda y busque una prueba concreta de la diferencia en los rendimientos entre usar una cosa y otra, lo encuentre aquí, con la documentación necesaria.

Gravatar de gabriel sosa

gabriel sosa
23 de Julio de 2006 a las 12:35 pm    

hola, buen articulo, estaaba buscando algo por el estilo como para ver que implemento en un sisitema que requiere varios idiomas.
Ahora, en el comentario de arriba decis que has leido otros articulos acerca del uso de variables frente a las constantes, tendrias alguna url como para darme, que quiero leer un poco mas. Saludos. Gabriel

Gravatar de Daniel

Daniel
3 de Noviembre de 2006 a las 10:40 am    

Muy buen artículo, muy útil.
Ese Alberto es el típico salame que está pensando en demostrar que sabe más que los otros, en vez de colaborar y leer el sentido del artículo (yo laburo con algún otro salame parecido).

saludos!

Gravatar de chapulín

chapulín
22 de Junio de 2007 a las 1:26 pm    

Excelente Pablo esto de compartir hallazgos con desconocidos como nosotros, jeje

Parece, a veces, que estas actitudes como la tuya de publicar experimentos o ideas o pareceres acerca de esas exploraciones personales, resulta en vano, y realmente es todo lo contrario producen cosas muy buenas y se genera un efecto dominó de los mil demonios, mil gracias viejo y haga caso omiso de don Alberto, y le felicito la altura para responderle al susodicho!!

un abrazo,
chapulín

Gravatar de aurea Blog » Optimizando PHP

aurea Blog » Optimizando PHP
24 de Agosto de 2007 a las 5:48 am    

[…] Pablo -de weBlog “UnLugar”- nos deja un interesante estudio de optimización sobre la definición de variables, constantes y matrices. […]

Gravatar de eNicaragua Informática » Optimizando PHP

eNicaragua Informática » Optimizando PHP
4 de Septiembre de 2007 a las 7:41 pm    

[…] Pablo -de weBlog “UnLugar”- nos deja un interesante estudio de optimización sobre la definición de variables, constantes y matrices. […]

Gravatar de Optimizando Php « Yumi Tominaga García

Optimizando Php « Yumi Tominaga García
15 de Octubre de 2007 a las 12:37 pm    

[…] Pablo -de weBlog “UnLugar”- nos deja un interesante estudio de optimización sobre la definición de variables, constantes y matrices. […]

Gravatar de Victor

Victor
17 de Febrero de 2008 a las 2:10 am    

Muy buen post, esta de mega nice, yo estaba buscando algo asi, hasta que encontre este magnifico post, ahora se que no hay problema en seguir usando las constantes, y pensaba que 100 constantes eran mucho jaja, este cuate usó 5000, :P , bueno pues muchas gracias, ciao ciao

Deja tu comentario...

Más entradas en UnLugar