Foros del Web » Programando para Internet » PHP »

ayuda con rendimiento de ciclos.

Estas en el tema de ayuda con rendimiento de ciclos. en el foro de PHP en Foros del Web. hola estoy optimizando mis script , tengo estos ciclos pero se demora mucho en responder. Código PHP: while( $res = $this -> conn -> obtener_fila ...
  #1 (permalink)  
Antiguo 01/12/2010, 15:45
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
ayuda con rendimiento de ciclos.

hola estoy optimizando mis script , tengo estos ciclos pero se demora mucho en responder.

Código PHP:

while($res=$this->conn->obtener_fila($result,0)){
            
$cadenasubstr($res->poligono,9,-2);
            
$array[]=explode(',',$cadena);
            
$arrayPro[]=$res->idpropiedad;
            
$arrayCentro[]=$res->centro;
        }
        
$count=count($array);
        for(
$i=0;$i<$count;++$i){
            
$count2=count($array[$i]);
            for(
$j=0;$j<$count2;++$j){
            
$this->output->allProperty[$i]->polygon[$j]=explode(" ",$array[$i][$j]);
            
$this->output->allProperty[$i]->idproperty=$arrayPro[$i];
            
$this->output->allProperty[$i]->center=explode(" ",$arrayCentro[$i]);
            }
      } 

quiciera saber que cosas puedo arreglar para que sean mas rapidos.

saludos
  #2 (permalink)  
Antiguo 01/12/2010, 15:52
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda con rendimiento de ciclos.

Saludos

mmm se me ocurre esto, seria que lo probaras!
Código PHP:
Ver original
  1. $i=0;
  2.  
  3. while($res=$this->conn->obtener_fila($result,0)){
  4.             $cadena= substr($res->poligono,9,-2);
  5.             $array[]=explode(',',$cadena);
  6.             $arrayPro[]=$res->idpropiedad;
  7.             $arrayCentro[]=$res->centro;
  8.            
  9.        
  10.             $count2=count($array[$i]);
  11.             for($j=0;$j<$count2;++$j){
  12.             $this->output->allProperty[$i]->polygon[$j]=explode(" ",$array[$i][$j]);
  13.             $this->output->allProperty[$i]->idproperty=$arrayPro[$i];
  14.             $this->output->allProperty[$i]->center=explode(" ",$arrayCentro[$i]);
  15.             }
  16.     $i++;
  17.         }

EDITADO: Vi unas cositas como chuecas ya quedaron ajustadas igual prueba
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 01/12/2010, 16:05
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: ayuda con rendimiento de ciclos.

hola muchas gracias me funciono pero tocaba colocar los $i++ despues del for.

voy a probar tiempos y digo si es mas rapido.


saludos
  #4 (permalink)  
Antiguo 02/12/2010, 07:05
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: ayuda con rendimiento de ciclos.

hola mira ya hice las pruebas si hace las cosas mas rapido , sale con este tiempo

tiempo = 0.04257392883300781

pero igual creo que la demora es la trasnferencia de datos. pues son mas de 1100 registros.

para este caso que se podra hacer?

saludos
  #5 (permalink)  
Antiguo 02/12/2010, 08:12
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: ayuda con rendimiento de ciclos.

Saludos

Antes de ese while ahí una consulta a la base de datos?.. De ser así seria optimizar esa parte, ya que dentro del ciclo no se me ocurre nada mas!.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #6 (permalink)  
Antiguo 02/12/2010, 08:53
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: ayuda con rendimiento de ciclos.

si mira esos ciclos trabajan con muchos registros q vienen de esta consulta.


Código PHP:

$query
="SELECT AsText(P.datosPoligono) poligono,M.idmanzana,P.idpropiedad,P.centro FROM manzanasxpropiedades PXM
    INNER JOIN propiedades P
    ON P.idpropiedad = PXM.idpropiedad
    INNER JOIN manzanas M
    ON M.idmanzana = PXM.idmanzana
    INNER JOIN barrios B
    ON B.idbarrio = M.idbarrio
    WHERE M.idbarrio='"
.$idbarrio."'";
    
    
$result=$this->conn->ejecutar($query); 

pero no se que mas le puedo optimizar a la consulta.
?


saludos
  #7 (permalink)  
Antiguo 02/12/2010, 15:48
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: ayuda con rendimiento de ciclos.

mirando el codigo me surgio una duda. yo antes del ciclo compruebo que el numero de registros no sea 0 asi

Código PHP:
Ver original
  1. if($this->conn->numero_filas($result)!=0)

mi pregunta es si es mas rapido primero hacer una consutla con un count(*) y mirar si este es mayor a 0 y hay si hacer la consulta. o es mas rapido con php?

saludos
  #8 (permalink)  
Antiguo 03/12/2010, 07:28
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: ayuda con rendimiento de ciclos.

hola haciendo pruebas me di cuenta que lo lento no era el algoritmo si la demora estaba en la transferencia de datos desde el servidor al cliente , pero hay si no se que se deba hacer cuando se tenga que tranferir demaciados datos , mi pregunta es si es combeniente usar cache con esta consulta donde solo variaria el idbarrio?

saludos

Etiquetas: ciclos, rendimiento
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 10:28.