Recientemente hice un benchmark en HipHop para PHP con Apache Benchmark (ab).Apache benchmark en HipHop para PHP
Esperaba que el resultado HipHop para PHP fuera más rápido que el servidor web normal de apache2, pero resultó para el otro lado.
Puedo usar este script para probar el servidor,
<?php
$i=0;
while($i < 1000000){
echo 'Welcome to HipHop for PHP<br />';
$i++;
}
?>
y utilizar este comando ab para referencia:
ab -n 500 -c 5 [URL]
y utilizar este comando para compilar:
HPHP/hphp hiphop1.php -k 1 -l 3
El resultado de la prueba de referencia para el servidor apache2:
[email protected]:~/dev/hiphop-php/doc$ ab -n 500 -c 5 http://localhost/hiphop1.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software: Apache/2.2.16
Server Hostname: localhost
Server Port: 80
Document Path: /hiphop1.php
Document Length: 31000000 bytes
Concurrency Level: 5
Time taken for tests: 71.024 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 15500095500 bytes
HTML transferred: 15500000000 bytes
Requests per second: 7.04 [#/sec] (mean)
Time per request: 710.240 [ms] (mean)
Time per request: 142.048 [ms] (mean, across all concurrent requests)
Transfer rate: 213122.37 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.9 0 19
Processing: 505 708 61.1 694 960
Waiting: 0 0 3.3 0 67
Total: 505 708 61.1 695 960
Percentage of the requests served within a certain time (ms)
50% 695
66% 714
75% 729
80% 736
90% 781
95% 857
98% 898
99% 938
100% 960 (longest request)
y el punto de referencia para HipHop para PHP:
[email protected]:~/dev/hiphop-php/doc$ ab -n 500 -c 5 http://localhost:8080/hiphop1.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software:
Server Hostname: localhost
Server Port: 8080
Document Path: /hiphop1.php
Document Length: 31000000 bytes
Concurrency Level: 5
Time taken for tests: 294.546 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 15500052500 bytes
HTML transferred: 15500000000 bytes
Requests per second: 1.70 [#/sec] (mean)
Time per request: 2945.455 [ms] (mean)
Time per request: 589.091 [ms] (mean, across all concurrent requests)
Transfer rate: 51390.26 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.6 0 20
Processing: 1515 2941 579.7 2919 4734
Waiting: 1452 2626 532.5 2609 4135
Total: 1515 2941 579.7 2919 4734
Percentage of the requests served within a certain time (ms)
50% 2919
66% 3147
75% 3334
80% 3448
90% 3704
95% 3937
98% 4223
99% 4394
100% 4734 (longest request)
La pregunta es, ¿por HipHop funcione más lento en mi punto de referencia?
¿Hay algún problema con la prueba de script?
Los servidores (especialmente el búfer de salida) se pueden configurar de forma diferente. Si el buffer es demasiado pequeño, se requieren más operaciones de entrada/salida. – LazyOne
Su código de prueba está lejos de ser una carga de trabajo de aplicación web típica. Las aplicaciones web modernas realizarán mucha instanciación de objetos, IO de base de datos, procesamiento de entrada de usuario, etc. Todo el código que se prueba es bucle y salida de texto. Es muy posible que el hiphop sea más rápido en el uso típico del mundo real, pero más lento en uno o dos casos muy específicos. – GordonM
¿Alguna sugerencia en la aplicación web de evaluación comparativa? especialmente HipHop para PHP? No sé cómo hacer un caso de prueba para el servidor web de evaluación comparativa – Kiddo