2011-07-11 12 views
5

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?

+0

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

+7

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

+1

¿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

Respuesta

3

Es un concepto erróneo común que PHP hip-hop acelera la ejecución de código PHP. No necesariamente. Facebook lo desarrolló porque toda su plataforma está integrada en un par de archivos PHP, y esos archivos se ejecutan con tanta frecuencia y son tan masivos que sería ineficaz usar PHP puro.

usar Hip-Hop es solo añadir un paso a la ejecución de PHP, nunca debes usar PHP Hip-Hop para 'Simple' Code así.

Además, PHP ejecuta algunas funciones que se ejecutan de forma nativa en C + con su script PHP.