Trucchi su come ottimizzare il codice PHP
1.480 visiteDi seguito una lista di regole e consigli si come ottimizzare il codice PHP:
- Se possibile dichiara un metodo come static la velocità di esecuzione aumenta di un fattore 4.
- echo è più veloce di print.
- Usa echo con parametri multipli invece di concatenare le stringhe.
- Indica il valore max di un for-loop fuori e non dentro al loop.
- Effettua l’ unset delle tue variabile come grandi array.
- Evita se possibile di usare magic methods like __get, __set, __autoload
- require_once() richiede molte risorse
- Utilizza path completi in includes and requires PHP risparmierà il tempo nel risolvere l’ OS paths.
- Usa strncasecmp, strpbrk and stripos invece di regex
- str_replace è più veloce di preg_replace, ma strtr è più veloce di str_replace di un fattore 4.
- Usa i select case invece di molti if
- Sopprimere gli errori usando il carattere @ rende l’esecuzione del codice molto lenta.
- Utilizza apache mod_deflate
- Chiudi la connessione al database quanto hai finito.
- $row[‘id’] è 7 volte più veloce di $row[id]
- I messaggi di errore richiedono molte risorse
- Non usare chiamate a funzioni all’interno di un ciclo for loop, come per esempio for ($x=0; $x < count($arr); $x) perchè la funzione count verrà chiamata ad ogni ciclo.
- Incrementare una variabile locale in un metodo è più veloce.
- Incrementare una variabile globale è 2 volte più lenta di una variabile locale.
- Incrementare la proprietà di un oggetto (eg. $this->attr++) è 3 volte più lento di una variabile locale.
- Incrementare una variable locale undefined è 10 volte più lenta di una pre-inizializzata.
- Basta dichiarare una variabile globale in una funzione senza usarla che si rallenta l’esecuzione perchè PHP controlla se già esiste.
- L’invocazione di metodi è indipendente dal numero di metodi presenti in una classe.
- I Metodi in una classe derivata vengono eseguiti più velocemente di quelli definiti nella class base.
- Nelle stringhe usa il caratter ‘ invece ” renderà l’esecuzione più veloce a meno che non devi inserire variabili all’interno.
- Uno script PHP viene eseguito dalle 2 alle 10 volte più lentamente da Apache che una pagina HTML statica.
- Usare un sistema di cache in PHP rende l’esecuzione da 25 al 100% più veloce perchè la pagina.
- Se puoi usa memcache
- Quando si lavora con le stringhe ed è necessario controllare che la stringa è una di una certa lunghezza che ci comprensibilmente vorrebbe utilizzare la funzione strlen(). Questa funzione è abbastanza veloce in quanto si tratta di un’operazione non esegue alcun calcolo , ma semplicemente restituisce la lunghezza già noto di una stringa disponibile nella struttura zval ( C struct interno utilizzato per memorizzare le variabili in PHP). Tuttavia poiché strlen() è una funzione che è ancora piuttosto lento perché la chiamata di funzione richiede diverse operazioni come minuscole & ricerca hashtable seguita dalla realizzazione di detta funzione . In qualche caso è possibile migliorare la velocità del vostro codice utilizzando un isset().
- Incrementare o decrementare il valore di una variable $i++ sembra essere più lenta di ++$i.
- Non tutto deve essere OOP, perchè metodi e oggetti possono consumare molta memoria.
- Non implementare tutte le tue strutture come classi, potresti usare array in modo utile anche.
- Usa sempre se puoi le funzioni predefinite: sono più veloci.
- Se hai funzioni che richiedono molto tempo di elaborazione considera la possibilità di usarle come estensioni di C.
- Profila il tuo codice potresti trovare colli di bottiglia, usa strumenti come Xdebug debugger.
- mod_gzip disponibile come modulo Apache comprime i dati a run-time riducensone il trasferimento dell’80%
- Leggi questo eccellente articolo su come ottimizzare il PHP di John Lim