PHP 7.3 è stato rilasciato alla fine del 2018, quindi comincia ad essere maggiormente diffuso sui sistemi in produzione. Oggi vedremo se davvero PHP 7.3 è più veloce rispetto a PHP 7.2 per la platform WordPress, che utilizziamo anche qui su devdev. Abbiamo fatto qualche test utilizzando WooCommerce, ed effettuato un benchmark sintetico per confrontare appunto le due versioni: PHP 7.3 ha un reale vantaggio su PHP 7.2? Vediamo.
Siamo partiti dalla major release 5.0 di WordPress con il tema preimpostato Storefront e abbiamo importato i 50 prodotti demo di WooCommerce. Il nostro host di prova è una istanza AWS EC2 t3.medium con 4Gb di RAM, 2 vCPU con il suo volume standard EBS.
Prima di lanciarci nel test, è importante bypassare ogni sorta di reverse proxy, o sistema di caching per spremere direttamente il backend in PHP. Per evitare qualsiasi tipo di problemi di rete, lanceremo il test direttamente dall’istanza, quindi lavoreremo in locale.
Abbiamo utilizzato il famoso tool Apache Bench, ab, eseguendo 3000 request con una concurrency di 1000, con keep alive abilitato.
ab -k -n 3000 -c 30 -H "Host: ec2-198-51-100-1.compute-1.amazonaws.com" http://ec2-198-51-100-1.compute-1.amazonaws.com:8000/
Vediamo un po’ il risultato:
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ec2-198-51-100-1.compute-1.amazonaws.com (be patient)
Completed 300 requests
Completed 600 requests
Completed 900 requests
Completed 1200 requests
Completed 1500 requests
Completed 1800 requests
Completed 2100 requests
Completed 2400 requests
Completed 2700 requests
Completed 3000 requests
Finished 3000 requests
Server Software: Apache/2.4
Server Hostname: ec2-198-51-100-1.compute-1.amazonaws.com
Server Port: 8000
Document Path: /
Document Length: 64366 bytes
Concurrency Level: 30
Time taken for tests: 13.601 seconds
Complete requests: 3000
Failed requests: 0
Keep-Alive requests: 0
Total transferred: 193950000 bytes
HTML transferred: 193098000 bytes
Requests per second: 220.58 [#/sec] (mean)
Time per request: 136.007 [ms] (mean)
Time per request: 4.534 [ms] (mean, across all concurrent requests)
Transfer rate: 13926.03 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 1
Processing: 102 135 7.9 137 157
Waiting: 21 31 3.0 32 44
Total: 102 135 7.9 137 157
Percentage of the requests served within a certain time (ms)
50% 137
66% 139
75% 141
80% 142
90% 144
95% 145
98% 147
99% 148
100% 157 (longest request)Abbiamo eseguito il test 3 volte, sia per la versione PHP 7.2 che per la 7.3.
PHP 7.2 (media): 192 richieste al secondo
PHP 7.3 (media): 224 richieste al secondo
WordPress con WooCommerce su PHP 7.3 batte PHP 7.2 ed ha un vantaggio di circa il 16.67%.
Se non l’avete già fatto, cosa aspettate ad aggiornare?