Niedawno zrobiłem benchmark na HipHop dla PHP z Apache Benchmark (ab).benchmark apache na HipHop dla PHP
Spodziewałem się, że wynik HipHop for PHP będzie działał szybciej niż normalnie serwer WWW Apache2, ale okazało się, że jest inaczej.
mogę użyć tego skryptu, aby przetestować serwer,
<?php
$i=0;
while($i < 1000000){
echo 'Welcome to HipHop for PHP<br />';
$i++;
}
?>
i używam tego polecenia ab do odniesienia:
ab -n 500 -c 5 [URL]
i używam tego polecenia do kompilacji:
hphp/hphp hiphop1.php -k 1 -l 3
Wynik testu wydajności serwera 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)
i punktem odniesienia dla HipHop for 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)
Pytanie jest, dlaczego HipHop działać wolniej w moim teście?
Czy jest coś nie tak z testem skryptu?
Serwery (zwłaszcza bufor wyjściowy) mogą być konfigurowane inaczej. Jeśli bufor jest zbyt mały, wymagana jest większa liczba operacji wejścia/wyjścia. – LazyOne
Twój kod testowy jest daleki od typowego obciążenia aplikacji internetowej. Współczesne aplikacje internetowe będą wykonywać wiele operacji na obiektach, IO bazy danych, przetwarzanie danych wejściowych przez użytkownika itp. Cały twój kod testuje pętle i wyniki tekstowe. Jest całkowicie możliwe, że hiphop jest szybszy w typowym, realnym świecie, ale wolniejszy w jednym lub dwóch bardzo szczególnych przypadkach. – GordonM
Jakieś sugestie w testowaniu aplikacji internetowych? szczególnie HipHop for PHP? Nie wiem, jak zrobić test dla benchmarkingu serwera WWW – Kiddo