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?