para - todas las etiquetas de php pdf
¿La ventaja/desventaja entre variables globales y parámetros de función en PHP? (6)
A partir de PHP 4, el uso de variables globales con grandes variables afecta significativamente el rendimiento.
Tener en $ data una cadena de 3Mb con datos de mapas binarios y ejecutar pruebas de 10k si el bit es 0 o 1 para un uso global diferente da los siguientes resultados de tiempo:
function getBit($pos) {
global $data;
$posByte = floor($pos/8);
...
}
T5 bit abierto: 0.05495s, busque: 5.04544s, todos: 5.10039s
function getBit($data) {
global $_bin_point;
$pos = $_bin_point;
$posByte = floor($pos/8);
}
Bit t5 abierto: 0.03947s, búsqueda: 0.12345s, todos: 0.16292s
function getBit($data, $pos) {
$posByte = floor($pos/8);
...
}
Bit t5 abierto: 0.05179s, búsqueda: 0.08856s, todos: 0.14035s
Entonces, pasar parámetros es mucho más rápido que usar global en variables> = 3Mb. No he probado con pasar una referencia de $ y datos y no ha probado con PHP5.
lo siento, soy un principiante y no puedo determinar qué tan buena es esta pregunta, quizás suene absolutamente obvio para algunos de ustedes.
Si nuestro uso de estos dos a continuación es el mismo, ¿cuál es mejor?
function doSomething ($var1,$var2,..){
...
}
O
function doSomething (){
global $var1,$var2,..;
...
}
con nuestro uso, quiero decir que sé que en el segundo escenario también podemos alterar el valor de las variables globales. pero ¿qué pasa si no necesitamos hacer eso, cuál es la mejor manera de escribir esta función? ¿las variables que pasan toman menos memoria que anunciar las funciones globales en una función?
Aunque no es una buena práctica, siempre y cuando se garantice que nunca se escribe el global, sino que solo se lee, tendrá la flexibilidad de los parámetros.
Como alternativa, puede pasar un parámetro (o dos si realmente va con la función, como exp) y el resto en una matriz de opciones (un poco como lo hace jquery). De esta manera, no está utilizando globales, tiene cierta flexibilidad de parámetros y ha definido claramente los valores predeterminados para cada parámetro.
function get_things($thing_name,$opt= array() {
if(!isset($opt["order"])) $opt["order"]= ''ASC'';
}
El uso de la memoria es una preocupación insignificante. Es mucho más importante que el código sea fácil de seguir y no tenga resultados ... imprevisibles. Agregar variables globales es una IDEA MUY MALA desde este punto de vista, OMI.
Si le preocupa el uso de la memoria, lo que debe hacer es
function doSomething (&$var1, &$var2,..) {
...
}
Esto pasará las variables por referencia y no creará nuevas copias de ellas en la memoria. Si los modifica durante la ejecución de la función, esas modificaciones se reflejarán cuando la ejecución vuelva al llamante.
Sin embargo, tenga en cuenta que es muy inusual que incluso esto sea necesario por motivos de memoria. La razón habitual para usar la referencia por referencia es la razón que mencioné anteriormente (modificándolos para la persona que llama). El camino a seguir es casi siempre el simple.
function doSomething ($var1, $var2) {
...
}
Escríbelo para tomar parámetros. La capacidad de mantenimiento es mucho más importante que la microoptimización. Cuando toma parámetros, las variables no se pueden modificar en lugares inesperados.
Evite usar variables globales, use las variables que pasan en el enfoque de parámetros en su lugar. Dependiendo del tamaño de su programa, el rendimiento puede ser insignificante.
Pero si le preocupa el rendimiento, aquí hay algunas cosas clave que debe tener en cuenta sobre el rendimiento de las variables globales con respecto a las variables locales (variables definidas dentro de las funciones).
- Incrementar una variable global es 2 veces más lento que una var. Local.
- El solo hecho de declarar una variable global sin usarla en una función también ralentiza las cosas (aproximadamente la misma cantidad que al incrementar una var local). PHP probablemente hace una verificación para ver si existe el global.
Además, las variables globales aumentan el riesgo de usar valores incorrectos, si se modificaron en otro lugar dentro de su código.
Pasar en parámetros, evitar globales. Mantener solo el alcance que necesita para una situación dada es una medida del buen diseño de código. Es posible que desee ver el alcance variable de PHP ...
http://php.net/manual/en/language.variables.scope.php
Un recurso excelente, con algunos consejos sobre cuáles son las mejores prácticas y la gestión de la memoria.