linux user group brescia

immagine del castello

Archivio della mailing list

Allocazione dinamica in C

Bauno bauno a inwind.it
Gio 30 Dic 2004 17:02:41 UTC
On Thursday 30 December 2004 16:12, Enrico Colombini wrote:

> Oppure della semplice pazienza, ragionamento e prove; dopotutto non e'
> difficile scrivere codice in modo che resti il piu' possibile nella cache
> della CPU.

Con una CPU moderna, sistema operativo "moderno" e multitasking preemptive? In 
bocca al lupo...

> > Ma non direi che contano "solo" i cache hit/miss.
>
> Beh, il rapporto tra i tempi di esecuzione nelle due condizioni puo'
> superare il 10:1, quindi direi che e' piu' importante di molte
> ottimizzazioni del codice.

Sì, ma dipende dall'hardware, da come il codice ti viene compilato (tipo di 
compilatore/opzioni di compilazione), dal tipo di CPU che utilizzi, dal 
riordino delle istruzioni che viene eseguito dalla CPU...

> La prima volta che ci inciampai avevo fatto una grossa look-up table di cui
> andavo fiero perche' evitava centinaia di migliaia di operazioni... finche'
> non mi accorsi che *rallentava* l'esecuzione di un 5x circa rispetto alle
> operazioni suddette.

Posso capire che l'accesso alla memoria sia molto + lento dell'esecuzione di 
istruzioni in una cache L1 sincrona, ma da qui a rendere un lookup meno 
performante di centinaia di migliaia (!) di operazioni, mi sembra un po' 
strano (anche se dipende, è chiaro).

Però sto facendo fatica a capire come il discorso sulle maggiori performance 
dell'L1 cache si inserisca in quello sull'allocazione dinamica e sulle 
maggiori performance dell'aritmetica dei puntatori...:-?


-- 
Bauno - Eurydices, oro, properata retexite fata!
God is real, unless declared integer.




Maggiori informazioni sulla lista Lug