Ahora que estamos en un nuevo servidor dedicado quería hacer unas pequeñas pruebas de rendimiento, para ello he utilizado el cálculo del número Pi que es uno de los sistemas más populares, para ello voy a comparar los datos de el actual servidor (Media Temple) con el antiguo (Servage).
Para ello el script tiene una variable llamada precisión la cual nos servirá para endurecer o suavizar la dificultad del cálculo del número Pi, aquí os dejo el código fuente del script con su correspondiente explicación.
function bcpi($precision=30){
$exactitud= ($precision+5)*45/32;
//Utilizar $precision a 180 tarda más o menos unos 30 segundos
bcscale($precision+5);
$n = 1;
$bcatan1 = 0;
$bcatan2 = 0;
while($n < $exactitud){
//Funciones
$bcatan1 = bcadd($bcatan1, bcmul(bcdiv(pow(-1, $n+1), $n * 2 - 1), bcpow(0.2, $n * 2 -1)));
$bcatan2 = bcadd($bcatan2, bcmul(bcdiv(pow(-1, $n+1), $n * 2 - 1), bcpow(bcdiv(1,239), $n * 2 -1)));
++$n;
}
return bcmul(4,bcsub(bcmul(4, $bcatan1),$bcatan2),5);
}
Esta no es la manera más eficaz de calcularlo pero si es la más fácil combinando la fórmula Machin y la serie de Taylor.
Te preguntarás porque no utilizar la función original pi(), pues muy simple porque su precisión es limitada.
La ejecución de este script es muy lenta y el tiempo necesitado para su cálculo aumenta a medida que subimos el valor de la variable precision.
Hay que aclarar que la variable exactitud no es lo mismo que la variable precision.
Servage
La ejecución con precision 1, tardó 0,00 segundos en su ejecucion
La ejecución con precision 11, tardó 0,02 segundos en su ejecucion
La ejecución con precision 21, tardó 0,10 segundos en su ejecucion
La ejecución con precision 31, tardó 0,38 segundos en su ejecucion
La ejecución con precision 41, tardó 3,24 segundos en su ejecucion
La ejecución con precision 51, tardó 2,05 segundos en su ejecucion
La ejecución con precision 61, tardó 2,72 segundos en su ejecucion
La ejecución con precision 71, tardó 5,99 segundos en su ejecucion
La ejecución con precision 81, tardó 11,59 segundos en su ejecucion
La ejecución con precision 91, tardó 24,40 segundos en su ejecucion
La ejecución con precision 101, tardó 28,88 segundos en su ejecucion
Media Temple
La ejecución con precision 1, tardó 0,00 segundos en su ejecucion
La ejecución con precision 11, tardó 0,01 segundos en su ejecucion
La ejecución con precision 21, tardó 0,06 segundos en su ejecucion
La ejecución con precision 31, tardó 0,20 segundos en su ejecucion
La ejecución con precision 41, tardó 0,72 segundos en su ejecucion
La ejecución con precision 51, tardó 1,45 segundos en su ejecucion
La ejecución con precision 61, tardó 2,84 segundos en su ejecucion
La ejecución con precision 71, tardó 5,23 segundos en su ejecucion
La ejecución con precision 81, tardó 10,25 segundos en su ejecucion
La ejecución con precision 91, tardó 15,12 segundos en su ejecucion
La ejecución con precision 101, tardó 24,28 segundos en su ejecucion
Conclusión
Cómo se puede apreciar hay una notable diferencia de velocidad de cálculo del script de un servidor a otro... lo cual me alegra bastante.
Si alguien esta interesado en hacer una prueba de rendimiento para su servidor aquí puede conseguir el código fuente.
Por cierto en el tiempo que he estado escribiendo este post he visto que Anieto ha escrito sobre el mismo script.
Fuente original del script: WebDevLogs
Enlaces Relacionados
Generar passwords accesibles con Php
Codigo Fuente del generador de passwords en PHP
Ejemplo de ejecución del script
PHP y MySql una estrecha relación
5 cosas que no sabías hacer con PHP
Generar documentos OpenOffice con PHP
Nueva versión de Notepad++
Hola Mundo!
Identificar las consultas más lentas de MySql
Crea sencillas gráficas con MySql
Programar un script PHP para saber quién está en línea
Consejos para optimizar PHP
Editando en Opera páginas web en tiempo real
Enlaces Relacionados
- Compressed HTML comprime tus páginas
- Limitar descargas con Php
- Técnicas de optimización de código
- Reglas básicas para un desarrollador web
- Generar documentos OpenOffice con PHP
- Crea thumbnails con php
- Cachea tus páginas en 5 pasos (PHP)
- Banear Ips con php
- Técnica de generación procedural (64KB generando 1.9GB)
- XML y PHP 5





Este es el resultado en
Este es el resultado en DreamHost (plan de host compartido)
La ejecución con precision 1, tardó 0,00 segundos en su ejecucion3.14159
La ejecución con precision 11, tardó 0,01 segundos en su ejecucion3.14159
La ejecución con precision 21, tardó 0,07 segundos en su ejecucion3.14159
La ejecución con precision 31, tardó 0,28 segundos en su ejecucion3.14159
La ejecución con precision 41, tardó 1,43 segundos en su ejecucion3.14159
La ejecución con precision 51, tardó 2,36 segundos en su ejecucion3.14159
La ejecución con precision 61, tardó 4,91 segundos en su ejecucion3.14159
La ejecución con precision 71, tardó 8,20 segundos en su ejecucion3.14159
La ejecución con precision 81, tardó 15,44 segundos en su ejecucion3.14159
La ejecución con precision 91, tardó 22,07 segundos en su ejecucion3.14159
La ejecución con precision 101, tardó 35,95 segundos en su ejecucion
Nueva versión con una velocidad más rápida
La nueva versión del código está aquí, él puede calcular 1000 decimales del pi en 5 segundos.
Mola, pero no deja de ser un
Mola, pero no deja de ser un benchmark sencillo que no te da una medida real del rendimiento del servidor (sólo de la potencia de cálculo por fuerza bruta). Hay más aspectos que influyen en el rendimiento (memoria, transferencia a/desde disco...) No estoy muy puesto en estos temas, pero seguro que buscando un poco encuentras un benchmark integral para estos menesteres. Si no siempre puedes seleccionar una serie de páginas, medir los tiempos de respuesta y luego comparar con otra/s máquina/s, esa sería una buena medida del rendimiento del servidor.
Prueba con este otro codigo,
Prueba con este otro codigo, el problema se debe a que la ejecucion del script es demasiado larga, subiendo el valor inicial del contador i la ejecucion del script tendra que realizar menos operaciones...
http://www.tufuncion.com/archivos/prueba-pi2.txt
valores parecidos
manu, lo que habías pedido...
3.14159
La ejecución con precision 81, tardó 9,79 segundos en su ejecucion3.14159
La ejecución con precision 91, tardó 14,08 segundos en su ejecucion
valores parecidos...
es verdad los resultados son
es verdad los resultados son casi identicos
No pasa de 81
Del 81 no pasa...
mejorable?
La ejecución con precision 1, tardó 0,00 segundos en su ejecucion
La ejecución con precision 11, tardó 0,01 segundos en su ejecucion
La ejecución con precision 21, tardó 0,05 segundos en su ejecucion
La ejecución con precision 31, tardó 0,20 segundos en su ejecucion
La ejecución con precision 41, tardó 0,64 segundos en su ejecucion
La ejecución con precision 51, tardó 1,39 segundos en su ejecucion
La ejecución con precision 61, tardó 2,68 segundos en su ejecucion
La ejecución con precision 71, tardó 4,72 segundos en su ejecucion
La ejecución con precision 81, tardó 9,59 segundos en su ejecucion
Eso en un hosting físicamente en España...
son buenos los resultados si
son buenos los resultados si los comparamaos con los de mi hosting dedicado en media temple, los datos mas significativos se obtendrian con precision 90 y 100, pero hay que hacer una pequña modificacion en el script, puse el limite en 81 porque sino el servidor excedia el tiempo limite de ejecucion, si puedes postea los resultados de 91 y 100...
Gracias
Enviar un comentario nuevo