Newsgroup: it.comp.www.php
Titolo: Efficienza in PHP (gestione memoria run-time)

Salve a tutti,
Sapete se sia piu' efficiente gestire grosse quantita' di dati, in PHP, 
attraverso array (associativi) o tramite liste linkate?
Ancora: quanto pesa l' includere librerie di cui, poi, non viene 
sfruttato il codice?
Piu' in generale: esiste documentazione su questi problemi?
Grazie in anticipo.

Englishman ha scritto:

Se la libreria ï¿œ ben strutturata quindi oggetti o funzioni e queste non
vengono chiamate in altre parti del codice, hai solo l'overhead dovuta
ai tempi di lettura del file.
Per gestire grosse quantitï¿œ di dati, come dici te, ed essere efficente
puoi uasre la standard php library (SPL)
http://it2.php.net/manual/en/book.spl.php
una serie di strutture dati ottimizzate e che usano l'iterator pattern.
Quale struttura utilizzare dipende fortemente sia dal tipo di dati sia
dal tipo di operazione, ad esempio se devi inserire frequentemente e
ricercare un dato una volta ogni tanto una linked list ï¿œ sicuramente la
struttura piï¿œ adatta, mentre se devi ricercare frequentemente non lo ï¿œ,
perchï¿œ per ricercare un item nel caso peggiore te la devi scorrere
tutta, etc....
quindi dipende dal problema e non ci puï¿œ essere una risposta univoca
alla tua domanda in quanto non specifiche ne cosa intendi per "grosse
quantitï¿œ di dati" ne che operazioni devi farci.

 quantitï¿œ di dati" ne che operazioni devi farci.
Diciamo da migliaia a decine di migliaia di "strutture" dati di 
lunghezza complessiva tra lo zero e i 500-1000 byte (interi resultset di 
query su DB).
La tentazione iniziale e' quella di utilizzare gli array (piu' o meno 
associativi), utilizzati anche per elaborazioni intermedie dei risultati 
(quindi con frequenti creazioni/inserimenti nell' array) ma la 
preoccupazione principale e' quella che tale soluzione provochi trashing 
di memoria o di tempo.
E' un po' la stessa paura che ho/avevo riguardo all' altro argomento 
(quello legato all' inclusione di librerie che poi non vengono 
utilizzate): avere (es.) una symbol-table (da quanto mi pare di avere 
capito leggendo tra le righe della documentazione, viene utilizzato 
questo meccanismo) enorme di cui, poi, viene utilizzata solo una parte.
Riassumendo: qualcuno sa se esistano informazioni sugli internals di PHP?

 
cerca di fare piï¿œ operazioni lato db.

michelangelo giacomelli ha scritto:

cmq:
1024 byte 1k
decine di migliaia facciamo 5 decine
5*10*1000*1k=50.000K
1024 k => 1mb
50.000 k => 50mb...
non mi sembra una struttura cosï¿œ terribile secondo me vai tranquillo
anche con gli array, ovviamente dipende anche dal numero di utenti se
hai mille mila milioni di utenti la batteria di server deve essere bella
cazzuta, se hai un utente ogni mezzora o se sei su una intrenet anche
20-30 persone non hai problemi di sorta.
dettaglia meglio.

 interprete, e non quello intrinseco delle mie scelte).
PHP implementa gli array come hash table di dimensione variabile, con 
l'aggiunta di una lista per tenerli ordinati, da quanto so.
Una linked list la devi implementare tu manualmente, quindi in codice 
PHP, e probabilmente la implementerai con degli array o con degli oggetti.
In entrambi i casi, a meno di situazioni molto particolari, sara` piu` 
lento che usando gli array, che sono implementati in C e quindi compilati.
Non ti so indicare benchmark specifici, ma "a intuito" e` cosi`. :)
Bye.