Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/09/2003, 05:21
Nark
 
Fecha de Ingreso: agosto-2003
Mensajes: 102
Antigüedad: 20 años, 9 meses
Puntos: 0
lo de que poner comillas simples es mas optimizado que poner comillas dobles me ha picado mucho la curiosidad, asi que he hecho un pequeño script para averiguarlo, os lo pongo porque tambien puede servir a alguien en el futuro para poder elegir entre formas de programación distintas y ver cual es mas optima...

lo que hace basicamente el script es obtener el tiempo que se tarda en procesar un bucle, donde se puede poner el codigo que quieras y te hace medias del tiempo (por eso de que el tiempo de procesado de un script no siempre es igual y depende de muchos factores del servidor)... a parte se le puede configurar la cantidad de veces a repetir el bucle y la cantidad de veces a recargar la pagina... en general creo que cumple su mision, lo he comentado para que sea mas facil de entender a todos que hace cada parte

Código PHP:
<?php
// Inicializamos el buffer de salida, unicamente para controlar la 
// información que queremos mostrar
ob_start();

//Usa sesiones y aviso no tengo mucha idea de como van, de todas formas a mi me funciono...
session_start();

// Variables de configuracion, la primera cuantas veces se 
// repetira el bucle al cargarse la pagina, y cuantas veces se tiene 
// que cargar la pagina... en total se harian 2000x200 veces la 
// instruccion a analizar, un total de 400.000 suficiente como para 
// hacerse una buena media y una idea mas o menos exacta de 
// la diferencia de tiempos de procesado
$repetir_bucle 2000;
$recargar_pagina 200;

//Miramos si existen las variables de sesion
if($_SESSION['tiempo']){
// Si existen, condicionamos la parte que hara el bucle de recargar 
// la pagina cada vez, enviando la cabecera correspondiente: 
// pasados x segundos ira a la pagina correspondiente, se puede 
// sustituir el 1 por el numero de segundos a esperar... depende 
// en parte de lo que tarde en procesarse una sola vez nuestro bucle 
    
if($_SESSION['num'] < $recargar_pagina){
        
header("Refresh: 1 ;URL=".$_SERVER['PHP_SELF']."");
    }
}
else{
    
//Si no estan definidas las variables de sesion las creamos y las inicializamos a 0
    
session_register('tiempo'); 
    
session_register('num');
    
$_SESSION['tiempo'] = 0;
    
$_SESSION['num'] = 0;
}


//Calculamos el tiempo inicial antes de empezar el bucle
$tiempo_temporal     explode(' 'microtime());
$tiempo_inicio     $tiempo_temporal [1] + $tiempo_temporal [0];

//Aqui iria el bucle... por ejemplo en mi caso puse una vez esto:
//$variable = 'cadena de texto . ';
//for ($i=0; $i<$repetir_bucle; $i++){
//    echo "hola " . $variable;
//}
//y la siguiente vez esto:
//$variable = 'cadena de texto . ';
//for ($i=0; $i<$repetir_bucle; $i++){
//    echo 'hola ' . $variable;
//}
//Se puede poner el bucle que sea, todas esas dudas que salen
// mientras programas para saber que es mas optimo

$variable 'cadena de texto . ';
for (
$i=0$i<$repetir_bucle$i++){
    echo 
"hola " $variable;
}


//Aqui volvemos a obtener el tiempo despues de hacer el bucle
$tiempo_temporal explode(" "microtime());
$tiempo_final $tiempo_temporal[1] + $tiempo_temporal[0];

//Restamos los dos tiempos
$tprocesado = ($tiempo_final $tiempo_inicio);

//Le damos formato al tiempo
$tprocesado number_format($tprocesado10);

// Añadimos los nuevos valores a las variables de sesion
$_SESSION['tiempo'] += $tprocesado;
$_SESSION['num']++;

//Hacemos los calculos para obtener medias
$media_paginas number_format($_SESSION['tiempo']/$_SESSION['num'], 10);
$media_instruccion number_format($tprocesado/$repetir_bucle15);
$media_total_instruccion number_format($media_paginas/$repetir_bucle15);

// Descartamos lo que tenemos hasta ahora en el buffer de 
// salida, lo limpiamos, pues como mucho tendremos las salidas 
// que haya hecho el bucle, y no nos interesa de que se vean por 
// pantalla... 
ob_end_clean();


//Y finalmente mostramos el resultado por pantalla
echo '<html><head><title>Calculos sobre el tiempo de procesamiento en php</title></head><body>
<div style=\'font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px;\'>
<br /><br />Tiempo de carga total del bucle en esta pagina -> <b>'
.$tprocesado.'</b>
<br />Media del tiempo que se ha tardado en procesar una unica vez el codigo del bucle en esta pagina -> <b>'
.$media_instruccion.'</b>
<br /></br>Se han procesado <b>'
.$_SESSION['num'].'</b> páginas, con un tiempo total de <b>'$_SESSION['tiempo'].'</b>
<br />La media total de procesado de una sola pagina es -> <b>'
.$media_paginas.'</b>
<br /><br /><b><i> La media total del tiempo que se ha tardado en procesar una unica vez el codigo del bucle es 
<b>'
.$media_total_instruccion.'</b></div></body></html>'

//Liberamos el buffer 
ob_end_flush();

?>
bueno, solo decir que no vereis nunca por pantalla lo que hace el bucle, pues verlo 2000 veces no era muy comodo, asi que utilice el buffer para evitar que se muestre, aunque como veis se pueden poner echos igualmente y los calculos continuan siendo igualmente validos... bueno, espero que le sirva a alguien

Pd. por cierto, cluster tenia razón, segun el script es mucho mejor poner comillas simples que dobles, en el tiempo que se tarda de procesar una unica vez la instruccion no hay mucha diferencia, pero si hay bastantes, como suele ser normal, se nota

Última edición por Nark; 09/09/2003 a las 05:38