I’ve tried to reproduce this benchmark which compares PHP 7 with older versions on a WordPress server: http://talks.php.net/oz15#/wpbench
My configuration is nearly the same, the server has an i7, SSD, 16GB RAM and debian. The server software is nginx. Suprisingly my results differ a lot from the ones linked above.
In my tests Siege (https://www.joedog.org/siege-home/) outputs the following:
For PHP 7.0.0RC1:
siege -c100 -r100 http://10.22.255.133/wordpress/
** SIEGE 3.0.8
** Preparing 100 concurrent users for battle.
The server is now under siege.. done.
Transactions: 10000 hits
Availability: 100.00 %
Elapsed time: 131.61 secs
Data transferred: 95.77 MB
Response time: 0.75 secs
Transaction rate: 75.98 trans/sec
Throughput: 0.73 MB/sec
Concurrency: 56.98
Successful transactions: 10000
Failed transactions: 0
Longest transaction: 1.01
Shortest transaction: 0.04
For PHP 5.6.12:
siege -c100 -r100 http://10.22.255.133/wordpress/
** SIEGE 3.0.8
** Preparing 100 concurrent users for battle.
The server is now under siege.. done.
Transactions: 10000 hits
Availability: 100.00 %
Elapsed time: 63.41 secs
Data transferred: 95.77 MB
Response time: 0.03 secs
Transaction rate: 157.70 trans/sec
Throughput: 1.51 MB/sec
Concurrency: 4.45
Successful transactions: 10000
Failed transactions: 0
Longest transaction: 0.63
Shortest transaction: 0.01
When looking at the transaction rate you can see, that PHP 5 is about two times faster than PHP 7. I can’t believe that.
Another interesting fact is, that running this benchmark (http://www.php-benchmark-script.com/) results in PHP 7 being about 3 times faster than PHP 5 (of course on the same server where I’ve also tested WordPress). The measured results were:
- PHP 7.0.0RC1 | PHP 5.5.28
- Math: 0.201 | 0.683
- String Manipulation: 0.271 | 0.77
- Loops: 0.166 | 0.486
- If Else: 0.12 | 0.295
I’ve uploaded both phpinfo() files in case that helps:
- PHP Version 7.0.0RC1: http://simsso.de/downloads/stackoverflow/php7.html
- PHP Version 5.6.12-0+deb8u1: http://simsso.de/downloads/stackoverflow/php5.html
Do you have any idea why PHP 7 is that much slower in my tests with WordPress?
With opcache enabled PHP 7 is actually twice as fast as PHP 5. Thanks Mjh for your hint!
I’ve made the following measurements on a randomly filled WordPress Server.
Siege now outputs the following for PHP 7.0.0RC1:
Transactions: 10000 hits
Availability: 100.00 %
Elapsed time: 62.14 secs
Data transferred: 604.20 MB
Response time: 0.02 secs
Transaction rate: 160.93 trans/sec
Throughput: 9.72 MB/sec
Concurrency: 3.77
Successful transactions: 10000
Failed transactions: 0
Longest transaction: 0.41
Shortest transaction: 0.01
And PHP 5.6.12:
siege -c100 -r100 http://10.22.255.133/wordpress/
** SIEGE 3.0.8
** Preparing 100 concurrent users for battle.
The server is now under siege.. done.
Transactions: 10000 hits
Availability: 100.00 %
Elapsed time: 119.98 secs
Data transferred: 604.20 MB
Response time: 0.60 secs
Transaction rate: 83.35 trans/sec
Throughput: 5.04 MB/sec
Concurrency: 49.86
Successful transactions: 10000
Failed transactions: 0
Longest transaction: 4.06
Shortest transaction: 0.04
According to the output of
phpinfo
you posted,opcache
isn’t enabled for your PHP 7, while it is for PHP 5. That alone can amount for a huge difference.I currently have the same surprising results on the CLI side.
One of my old projects uses a PHING build. It was running on PHP 5.3 then PHP 5.6.
I tried using PHP 7 and noticed a huge difference. So i decided to time the script execution.
FYI it is a real life projects with thousands of files processed during the build.
Build using PHP 5.3.29:
3 minutes and 44 seconds elapsed.
Build using PHP 7.2.11:
11 minutes and 41 seconds elapsed.
I noticed the CLI did not have opcache activated, here is the results with opcache:
Build using PHP 7.2.11 + opcache:
12 minutes and 18 seconds elapsed.
Yes, WORSE
FYI:
Btw, I have to say I never noticed a huge difference on prod with apache when switched from PHP 5 to PHP 7. Despites all of the bechmarks we see online, the difference is far from obvious.
Neddless to say, for that project, I will stick to PHP 5 version.