Due giorni fa è uscita la versione 8.2 di PHP (release ufficiale), online non si trovano ancora benchmark di prestazioni, volevo essere il primo a fare un test di questo tipo e condividere il risultato 🙂 in realtà l'installazione su Linux è stata piuttosto macchinosa e lenta (con qualche tentativo non andato a buon fine), essendo una versione diversa da quella presente di default.
L'ho testato su Kubuntu 22.10 (Kinetic Kudu) in Live USB, dal quale sto scrivendo ora. Kubuntu è una distribuzione Linux basata su Ubuntu, con ambiente grafico KDE Plasma.
Dopo averci sbattuto la testa abbastanza, riporto la procedura per Linux (ufficiale che funziona, le altre guide online presentano spesso bug, funzionano in un caso specifico es. quel determinato ambiente con tutte le dipendenze già installate, altrimenti... ti arrangi 😅 ).
- sito ufficiale, download php-8.2.0.tar.gz
- andiamo nella directory di download (generalmente, Downloads)
- estraiamo l'archivio .tar.gz
- andiamo nella cartella estratta, apriamo il terminale da qui
- se PHP non è presente di default (altrimenti prima
sudo remove php*
), scriviamo (e attendiamo, cliccando invio quando lo chiede):
(codice valido per Debian/Ubuntu e derivate)
sudo apt install -y pkg-config build-essential autoconf bison re2c \
libxml2-dev libsqlite3-dev
sudo apt update
sudo ./configure
sudo make install
- infine
php -v
mostra se tutto è andato a buon fine, indicando la versione installata (8.2.0 in questo caso)
In una sessione precedente, sempre con lo stesso sistema e macchina (per avere uniformità di dati ovviamente) ho installato la versione che è presente di default nelle repository di Kubuntu, ovvero 8.1.7.
Come benchmark ho misurato il tempo di esecuzione del codice di una risoluzione numerica dell'integrale di una curva Gaussiana, stesso codice, con le due diverse versioni di PHP. Nello specifico, ecco il codice:
<?php
$start=microtime(TRUE);
$ris=0;
$N=10**6;
$a=0;
$b=20;
$h=($b-$a)/$N;
function f($x){
return 1/(2*3.141592653589793)**0.5*2.718281828459045**(-0.5*$x**2);
}
for($i=0;$i<$N;$i++){
$ris+=$h*f($a+$i*$h);
}
$end=microtime(TRUE);
echo $end-$start."s\n";
?>
Risultati:
- PHP 8.1.7: circa 0.1136s, valore medio
- PHP 8.2.0: circa 0.1132s, valore medio
Per confronto diciamo che lo stesso programma scritto in C (linguaggio compilato che sappiamo essere molto più efficiente) impiega circa 0,044 secondi (allo stesso tempo però Python e MATLAB, con codice "standard" senza particolari librerie soprattutto per quanto riguarda Python, avevo fatto dei test in passato con una macchina e sistema "quasi uguale", impiegavano dai 3 ai 4 secondi, nonostante altri pregi di usabilità, da questo punto di vista sono estremamente inefficienti!).
Insomma tutto questo casino e sbattimento, per dire che alla fine in termini di performance con questo esempio di codice, le differenze sono piuttosto trascurabili! Sarebbe anche interessante testarlo (sempre a parità di sistema operativo e macchina) con versioni precedenti come PHP 7.4. In quel caso l'evoluzione è stata più netta, oltre ad avere anche aggiunto varie funzionalità.