Foros del Web » Programando para Internet » PHP »

que gasta mas memoria y procesador un if o un switch

Estas en el tema de que gasta mas memoria y procesador un if o un switch en el foro de PHP en Foros del Web. cual debo usar para que mi pagina no gaste tanta memoria y procesador.... ya que tengo que hacer unas.... 16 comparaciones de un dato cual ...
  #1 (permalink)  
Antiguo 21/11/2003, 14:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 444
Antigüedad: 14 años
Puntos: 0
que gasta mas memoria y procesador un if o un switch

cual debo usar para que mi pagina no gaste tanta memoria y procesador....

ya que tengo que hacer unas.... 16 comparaciones de un dato

cual es la funcion que hace menos gasto de RAM y processor

IF/elseif/else

switch/case/break...

por ahora me inclino por switch....
  #2 (permalink)  
Antiguo 21/11/2003, 14:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé como andará de rendimiento .. pero si tienes una variable $X que pude tomar N valores y en consecuencia haces tal cosa para cada caso .. lo lógico es usar el switch() .. por claridad del código y por qué está diseñado para ese caso concreto ..

Pero creo que a la hora de optimizar .. no sólo te puedes fijar en ese "detallito" para ahorrarte unos bytes en un microsegundo de proceso .. sino de ver otros detalles sobre tu própia lógica, funciones usadas para determinadas taréas y hasta configuración del servidor HTTP junto con la de PHP minimo .. y por supuesto si usas BD .. pues todo el tema referente a modelo de datos .. normalización .. etc.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 21/11/2003, 15:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 444
Antigüedad: 14 años
Puntos: 0
si usara BD el resultado de la comparativa lo entrega automaticamente, pero ese es el punto, que no tengo un mysql + php legitimo

ahora, dices microsegundos refriendote a cada una de las comparativas.... y multiplicando los microsegundos por 16 o 20 condiciones, tienes que ya no son microsegundos... ya son segundos... y segundos de espera para un usuario cada vez mas desesperado jeje
  #4 (permalink)  
Antiguo 21/11/2003, 15:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. la mejor forma es que lo testees tu mismo. Usa la función microtime() y calcula el tiempo que tarda tu script usando "if" y con la versión switch() en el proceso. Así sacas tus própias conclusiones.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 21/11/2003, 16:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

¿Y quien te dice que internamente usan el mismo codigo? Es decir, que coge PHP el bloque del switch y lo convierte automagicamente en una serie de if...else.

Yo creo que andaran mas o menos a la par en tiempo, quizas algunos nanosegundos de ventaja uno sobre otro.

Pero ten en cuenta que cualquiera de las dos formas sera mas rapida en un procesador mas rapido. Pero quizas una forma tenga mas coste de mantenimiento. Usa el codigo que sea mas facil de corregir, depurar y ampliar.

Yo apuesto por el switch, ya que para mi es lo que representa: elegir una accion en funcion de un valor. Una cadena de if tiene otro significado: una serie de condiciones que "disparan" una accion. Eligiendo la estructura de acuerdo con el significado, es una forma mas de que el codigo se autodocumente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:48.