martes, 24 de abril de 2012

Mejorando la performance para Yupp v0.5

En un artículo anterior que tiene casi un año y medio, estuvimos testeando la performance de Yupp PHP Framework. Ahora en vistas de una nueva liberación del framework, varias optimizaciones se han hecho, tanto a nivel de reorganización de código como a nivel de micro optimizaciones de PHP.

En el artículo anterior veíamos los siguientes resultados:

Finished 1000 requests 
Server Software:        Apache/2.2.11
Server Hostname:        localhost
Server Port:            80 

Document Path:          /YuppPHPFramework/apli/entrada/index
Document Length:        33 bytes 

Concurrency Level:      10
Time taken for tests:   181.797 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    995
Total transferred:      449790 bytes
HTML transferred:       33000 bytes
Requests per second:    5.50 [#/sec] (mean)
Time per request:       1817.969 [ms] (mean)
Time per request:       181.797 [ms] (mean, across all concurrent

requests)
Transfer rate:          2.42 [Kbytes/sec] received 

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0      16
Processing:  1031 1810 445.8   1672    4844
Waiting:     1031 1810 445.9   1672    4844
Total:       1031 1810 445.8   1672    4844 

Percentage of the requests served within a certain time (ms)
  50%   1672
  66%   1828
  75%   2063
  80%   2344
  90%   2516
  95%   2641
  98%   2719
  99%   2828
 100%   4844 (longest request)




Estos son los nuevos resultados:

Finished 1000 requests

Server Software:        Apache/2.2.11
Server Hostname:        localhost
Server Port:            80
Document Path:          /YuppPHPFramework/biblioteca/libro/list
Document Length:        3053 bytes
Concurrency Level:      10
Time taken for tests:   46.109 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    995
Total transferred:      3471784 bytes
HTML transferred:       3053000 bytes
Requests per second:    21.69 [#/sec] (mean)
Time per request:       461.094 [ms] (mean)
Time per request:       46.109 [ms] (mean, across all concurrent requests)
Transfer rate:          73.53 [Kbytes/sec] received


Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   219  459 158.1    453    4188
Waiting:      219  459 158.1    453    4188
Total:        219  459 158.1    453    4188


Percentage of the requests served within a certain time (ms)
  50%    453
  66%    484
  75%    516
  80%    531
  90%    563
  95%    672
  98%    719
  99%    766
 100%   4188 (longest request)


Conclusiones:

Las pruebas se hicieron en la misma computadora, así que no hay variaciones de hardware.

Lo que podemos notar es que aunque las nuevas pruebas transfieren más datos, se aumentó el nivel de concurrencia de pedidos atendidos en un 75% (de 5.5 pedidos por segundo a 21.69 pedidos por segundo).

En valores globales, se bajó el tiempo de atención global de pedidos a un 27% (de 99% de los pedidos atendidos en menos de 2828 ms bajó a 766 ms).

Yupp está mejorando y se demuestra en los números. Además se debe considerar que se agregaron características y funcionalidades, por lo que el framework en si es un poco más pesado que en el momento de la primer prueba.


No hay comentarios:

Publicar un comentario en la entrada