Foros del Web » Programando para Internet » PHP »

Optimizar buclles

Estas en el tema de Optimizar buclles en el foro de PHP en Foros del Web. Me gustaría que me dieran su opinion acerca de cual de los dos bucles lo ven más optimizado: Código PHP: for ( $i = 0 ; isset ( ...
  #1 (permalink)  
Antiguo 11/07/2008, 09:58
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Optimizar buclles

Me gustaría que me dieran su opinion acerca de cual de los dos bucles lo ven más optimizado:

Código PHP:
for ($i=0; isset ($miArray[$i] ) ; ++$i )
{} 
o

Código PHP:
$numElementos=count ($miArray);
for (
$i=0$i$numElementos ; ++$i )
{} 

Yo suelo usar el primero, ya que aunke la funcion isset se ejecuta en cada vuelta del array, no creo que sea una funcion muy costosa...aunque no lo sé seguro. Mientras que el segundo caso ....... el for sigue haciendo una comprobación ($i< $numElementos) en cada vuelta pero además de eso al principio necesita contar el numero de elementos del array.........

Que opinan?

Gracias y un saludo
  #2 (permalink)  
Antiguo 11/07/2008, 10:56
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Optimizar buclles

Holas Blade_Stom

No soy una experta optimizando los códigos, pero otros programadores me han sugerido a veces usar el control foreach en vez del for, disque porque consume menos memoria o algo así, la verdad no lo sé a cabalidad, pero últimamente lo he usado mucho, es más intuitivo en ciertos casos, y sólo uso el for cuando el índice numérico es muy importante...
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 11/07/2008, 11:00
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Optimizar buclles

Hola quinqui

todo lo contrario el foreach utiliza mas memoria ya que crea una copia del array a recorrer y es con esa copia con la que se trabaja dentro del foreach.

Blade_Stom
creo que la 2da opcion es mejor que la primera ya que la funcion count solo se llama una vez y luego se hacen n comparaciones en el for, mientras que con la segunda son n llamadas a la funcion isset
__________________
My path is lit by my own fire, I only go where I desire
  #4 (permalink)  
Antiguo 11/07/2008, 11:03
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Optimizar buclles

Ah, qué bueno saberlo, foreverOdd O_O, muchas gracias, lo tendré entonces en cuenta de ahora en adelante O_o...

Por cierto, yo no conocía el método 1 que mostró Blade_Storm... siempre usaba el método 2 o_o
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 11/07/2008, 11:06
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Optimizar buclles

lo que pasa es que la 2da condicion del for espera un boolean, si preguntas por un indice de un array que no existe este devuelve false, entonces el for se rompe.
__________________
My path is lit by my own fire, I only go where I desire
  #6 (permalink)  
Antiguo 11/07/2008, 17:05
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Optimizar buclles

mmm ya pero..aunque isset sea una funcion.......seguro que es más rapido la comparacion $i< $numElementos que isset ($miArray[$i] ???
  #7 (permalink)  
Antiguo 12/07/2008, 03:39
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Optimizar buclles

alguien tiene alguna idea acerca de si la funcion isset() es muy costosa?
  #8 (permalink)  
Antiguo 12/07/2008, 11:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Optimizar buclles

En principio usar una función va hacer que la ejecución del código sea más lenta. Por otro lado, lo que habría que comprobar es si consume más o menos memoria.
Ocurre algo similar con las variables y constantes, definir una variable es más rápido pero consume más memoria mientras que definir una constante es más lento pero consume menos memoria.
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 03:04.