2011-08-21 1 views
5

Per un programma efficiente in cache, i dati utilizzati devono essere archiviati in modo lineare?cache efficiente e BLOB - profiling cache hits/miss

Così invece di allocazione dinamica ho messo i miei dati in un blob utilizzando un allocatore lineare. È sufficiente per migliorare le prestazioni? cosa devo fare per migliorare ulteriormente l'efficienza della cache?

So che questa domanda arent specifico, ma non so come spiegarlo ...

Quali programmi me del profilo di cache/miss possono aiutare?

+2

ciò che è sufficiente/utile/necessario per il miglioramento delle prestazioni, dovrebbe essere deciso dal profiling, non per pura ipotesi. se esistesse una ricetta universalmente applicabile, sarebbe già stata implementata nella libreria di runtime. – Vlad

+0

Ho appena aggiunto un'altra domanda ... Conoscete qualche profiler per rilevare gli hit/miss della cache, così posso vedere se eventuali modifiche apportate migliorano le prestazioni? –

risposta

5

Se cercate un profiler per le finestre, si può provare AMD's CodeAnalyst o VerySleepy, entrambi questi sono gratuiti, AMDs è il più potente dei due però (e funziona su hardware Intel, ma iirc you non può usare il profiling basato su hardware), include il monitoraggio di cose come il ramo mancati pronostici e utilizzo della cache. Profiling è grande, come ci dice che cosa ottimizzare, ma non sempre sa come , per questo, si dovrebbe dare un'occhiata a Agner Fog's optimization manuals combinato con Intel's optimization manual (che contiene un sacco su di località e cachability ottimizzazioni)

3

Se si utilizza Linux, è possibile utilizzare Valgrind (in particolare lo strumento cachegrind).

Se si utilizza Windows, VS2010 (2008) Professional ha un profiler incorporato ma Non conosco alcun dettaglio sui suoi servizi di creazione profili di cache. C'è anche l'analizzatore Intel VTune (Amplificatore). Entrambi sono prodotti commerciali, anche se penso che si possano ottenere copie di valutazione per 30 giorni.

Alcune altre domande, in modo che possa essere di aiuto:

+0

Sembra buono ma io uso Windows ... C'è qualche sottotitolo di Windows per Valgrind? –

+0

@Tiago Costa che è un fiasco ... – celavek

0

Su Linux, è possibile utilizzare perf mem per campionare gli accessi alla memoria, compresi i messaggi mancanti in modo molto fine (incluso l'indirizzo di miss), come described here.