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
|