2010-01-17 35 views
5

Tengo curiosidad, ¿hay alguna ganancia de rendimiento, como el uso de menos memoria o recursos en PHP para:PHP array vs PHP Constant?

50 diferentes variables de ajuste guardado en una matriz como esta

$config['facebook_api_secret'] = 'value here'; 

o 50 diferentes variables de ajuste guardado en una constante como esto

define('facebook_api_secret', 'value here'); 

Respuesta

11

creo que esto es en el ámbito de ser un micro-optimización. Es decir, la diferencia es lo suficientemente pequeña como para que no valga la pena utilizar una solución sobre la otra en aras del rendimiento. Si el rendimiento fuera tan crítico para tu aplicación, ¡no estarías usando PHP! :-)

Use lo que sea más conveniente o que tenga más sentido. Puse los datos de configuración en constantes solo porque no se les debe permitir cambiar después de que se cargue el archivo de configuración, y para eso están las constantes.

+0

Entiendo que pensé que vería si 1 fuera mejor que el otro, ya que pueden lograr lo mismo. – JasonDavis

+1

Otra forma en que las constantes se podrían considerar mejores es que un editor inteligente o IDE debería poder completar el código para ellas. Pero la finalización del código no funciona para las claves de cadena de una matriz de configuración. –

1

Ganancias de rendimiento para 50 variables utilizando una técnica de codificación diferente/trucos de programación inteligente es la forma incorrecta de hacer las cosas en PHP. Recuerde siempre: el optimizador es más inteligente que usted.

1

No recibirá ningún tipo de ganancia de rendimiento para ninguno de estos. La verdadera pregunta es cuál es más útil.

Para valores escalares (cadenas, ints, etc.) que se definen una vez, nunca debe cambiar, y debe ser accesible por todas partes, debe usar una constante.

Si tiene algún tipo de configuración anidada compleja, por ejemplo:

$config->facebook->apikey = 'secret_key'; 
$config->facebook->url = 'http://www.facebook.com'; 

es posible que desee utilizar una matriz o una API de configuración proporcionada por uno de los muchos marcos por ahí (Zend_Config no es malo)

+0

Las constantes son mucho MUCHO más rápidas que una clase de configuración. No hay constructo y no -> getters() con constantes vs clase. Aunque no se ven tan bonitos :) – gus

+0

FYI: Enlace roto – James

3

En mis pruebas informales, he encontrado que acceder/definir las constantes es un poco más lento que las variables/matrices normales.

no va a hacer una diferencia de todos modos; Es más que probable que cualquier cosa que haga con ellos ocurrirá en milésimas de segundo.

La optimización de su base de datos (indexación, utilizando EXPLAIN para verificar sus consultas) y la configuración del servidor (usando APC) hará una gran diferencia en el largo plazo.