Based on bug #22815, which talks about unsatisfactory performance of the
apache 2 sapi, I've decided to conduct several benchmarks to determine the
depth of the problem.
Based on my tests (ran using 4.3.2-cvs on 1Ghz celeron) it appears that the
apache2handler is indeed slower.
The test script used was
<?php
for ($i=0; $i<100;$i++) {
echo $i;
}
?>
This script resulted in a 270 byte header being generated in addition to 190
bytes of actual content.
Apache 2 filter (the original apache 2 sapi) was able to handle 143
requests/second, while Apache2handler (newer & more stable sapi) could handle
only 133 requests/second. This represents aproximately 7% performance loss
for rather small request.
My next test was an attempt to determine the performance difference for larger
requests that one may encounter in real life situations.
Test script #2
<?php
$str = str_repeat('a', 4096);
for ($i=0; $i<8; $i++) {
echo $str;
}
?>
With Apache 2 filter I was able to send between 150-167 requests per second,
each request comprising of header 270 bytes and content 32768 bytes, with a
Net I/O: 4895.8 KB/s. The increase in perfromance can be explained by a
significantly lower number of calls to the output function and tunning the
output to benefit the most from output buffering.
Same test with Apache 2 handler resulted in:
Request rate: 132.0 req/s (7.6 ms/req)
Reply rate [replies/s]: min 117.4 avg 132.0 max 152.3
Net I/O: 3915.6 KB/s
CPU time [s]: user 7.63 system 38.92 (user 10.1% system 51.4% total 61.5%)
All tests were conducated 10 times a piece and a total of 10000 requests were
sent during each test instance.
Ilia
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php