devdev / in the loop

WordPress: PHP 7.2 vs PHP 7.3 (performance e benchmark)

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?

Questo articolo ti è stato utile?
Wordpress – LETTURA 5 MINUTI Abilitare upload di file in WordPress (senza plugin)
Se volessimo caricare nella Libreria Media di WordPress un tipo di file non supportato, riceveremo l’errore: Non hai i permessi…
Wordpress – LETTURA 7 MINUTI WordPress e cron job in modo semplice
WordPress possiede un sistema interno di cron job da poter sfruttare in modo modo semplice, senza l’utilizzo di alcun plugin…
Wordpress – LETTURA 3 MINUTI Ottenere l’URL della pagina attuale in WordPress
Ecco uno snippet che ci permette di ottenere velocemente l’URL della pagina WordPress attuale, non importa se essa è una…
Wordpress – LETTURA 4 MINUTI Visualizzare i tag di una categoria in WordPress
Nella costruzione di un template, spesso ci troviamo a dover ottenere la lista dei tag dei post associati ad una…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.