PDA

Visualizza la versione completa : [C] Efficienza liste e array dinamici per memoria


diavoletto88
25-12-2005, 12:21
ciao,
sto studiando il C e son arrivato a vedere le liste...però so che ci sono anche gli array dinamici. la domanda che vi porgo è quale struttura dati è meglio tra lista e array dinamico in ambito di efficienza per la memoria.
ciao e buon natale! :ciauz:

unomichisiada
25-12-2005, 13:15
Originariamente inviato da diavoletto88
ciao,
sto studiando il C e son arrivato a vedere le liste...però so che ci sono anche gli array dinamici. la domanda che vi porgo è quale struttura dati è meglio tra lista e array dinamico in ambito di efficienza per la memoria.
ciao e buon natale! :ciauz:
Non si può dire a priori che uan è meglio dell'altra dipende da cosa dei fare. E poi non è chiaro cosa intendi per "efficienza per la memoria", parli di occupazione di memoria? O parli di velocità di accesso ai dati nella struttura dati?

ibykos
25-12-2005, 16:42
Puoi evitare di scrivere il codice per una lista utilizzando la funzione realloc in maniera intelligente.
Non ha senso riallocare un vettore ogni volta che si aggiunge un nuovo elemento (sopratutto se il vettore ne ospita già 100.000), è meglio preventivare i costi e chiamare la realloc in maniera oppurtuna.
Se,er esempio, so che il mio vettore conterrà da 1.000 a 1.000.000 di elementi, ne rialloco mille per volta.
La realloc è una funzione lenta, molto più della malloc (la realloc è costruita con delle malloc), per cui l'uso di una lista, nella condizione che ho proposto, è più efficiente.

diavoletto88
26-12-2005, 12:32
Originariamente inviato da ibykos
Puoi evitare di scrivere il codice per una lista utilizzando la funzione realloc in maniera intelligente.
Non ha senso riallocare un vettore ogni volta che si aggiunge un nuovo elemento (sopratutto se il vettore ne ospita già 100.000), è meglio preventivare i costi e chiamare la realloc in maniera oppurtuna.
Se,er esempio, so che il mio vettore conterrà da 1.000 a 1.000.000 di elementi, ne rialloco mille per volta.
La realloc è una funzione lenta, molto più della malloc (la realloc è costruita con delle malloc), per cui l'uso di una lista, nella condizione che ho proposto, è più efficiente.

chiaro :ciauz:


Originariamente inviato da unomichisiada
Non si può dire a priori che uan è meglio dell'altra dipende da cosa dei fare. E poi non è chiaro cosa intendi per "efficienza per la memoria", parli di occupazione di memoria? O parli di velocità di accesso ai dati nella struttura dati?

intendo occupazione di memoria, mi spiego sempre alla c**o... :D

ciao :ciauz:

Loading