Si riferisce a un'applicazione Cli di PHP 5.3 che elabora molti dati in modo complesso, impiegando ore per essere eseguito. Qualcuno ha scoperto che la disattivazione della garbage collection lo ha reso molto più veloce (forse fino al 50%).Perché il garbage collector di PHP rallenta la perfomance e come gestire la memoria senza di essa?
L'unico articolo che ho trovato che menziona questo risultato è http://derickrethans.nl/collecting-garbage-performance-considerations.html. Non sono sicuro di seguirlo del tutto, ma sembra suggerire che si applica solo al codice con molti riferimenti circolari.
Qualcuno potrebbe far luce su questo per favore?
Inoltre, dato che abbiamo disattivato gc, esiste un modo per ridurre manualmente la memoria? È stato suggerito l'uso di unset(). Un rapido test ha dimostrato che ottanta o più byte sono liberati da unset() indipendentemente dalla dimensione dell'oggetto. Questo suggerisce che si sta solo mettendo in pausa il riferimento, che è confermato da ciò che ho letto online. Ho ragione nel pensare che questi ottanta byte sarebbero comunque liberati, anche senza la garbage collection, quando la variabile non rientra nello scope?
ho pensato che potrebbe essere il caso, ma il manuale è molto chiaro. Quindi, il normale è impossibile da disabilitare? (Non che io voglia, solo interessato) – naomi
@naomi Sì, non puoi disabilitarlo. Non c'è anche alcun motivo (l'impatto è molto piccolo) e poiché non è possibile liberare la memoria da PHP personalmente ('unset()' non lo fa) si avrà un grosso problema: D – KingCrunch