2011-08-21 12 views
5

Aby program był efektywny w pamięci podręcznej, używane dane powinny być przechowywane liniowo w prawo?Efektywne buforowanie i BLOB - profilowanie trafień w pamięci podręcznej/pomyłek

Więc zamiast alokacji dynamicznej umieszczam moje dane w obszarze blob za pomocą alokatora liniowego. Czy to wystarcza, aby poprawić wydajność? co powinienem zrobić, aby jeszcze bardziej zwiększyć wydajność pamięci podręcznej?

Wiem, że to pytanie ARENT specyficzne, ale nie wiem, jak to wytłumaczyć ...

Które programy mogą Me odsłon cache/strzela pomóc?

+2

to, co jest wystarczające/przydatne/potrzebne do poprawy wydajności, powinno być rozstrzygane przez profilowanie, a nie przez czysty domysł. gdyby istniał uniwersalny przepis, zostałby już zaimplementowany w bibliotece środowiska wykonawczego. – Vlad

+0

Po prostu dodano kolejne pytanie ... Czy znasz profilera wykrywającego trafienia/pomyłki w pamięci podręcznej, aby sprawdzić, czy jakieś zmiany, które robię, zwiększają wydajność? –

Odpowiedz

5

Jeśli szukasz profilera dla Windows, można spróbować AMD's CodeAnalyst lub VerySleepy, zarówno są one darmowe, AMD jest potężniejszym z nich jednak (i ​​działa na sprzęcie intel, ale iirc nie można używać sprzętu do profilowania), obejmuje monitorowanie takich rzeczy jak gałąź przepowiednia chybia i wykorzystanie pamięci podręcznej. Profilowanie jest wielki, jak mówi, co do optymalizacji, ale nie zawsze wiem jak, za to należy spojrzeć na Agner Fog's optimization manuals połączeniu z Intel's optimization manual (który zawiera dużo na lokalności i cachability optymalizacje)

3

Jeśli używasz systemu Linux, możesz użyć Valgrind (w szczególności narzędzia cachegrind).

Jeśli jesteś w systemie Windows, to wersja profesjonalna VS2010 (2008) ma wbudowany profiler, ale Nie znam żadnych szczegółów dotyczących jego funkcji profilowania pamięci podręcznej. Dostępny jest również Intel VTune Analyzer (Amplifier) ​​Intel . Oba są produktami komercyjnymi, chociaż wydaje mi się, że można uzyskać 30-dniowe kopie testowe.

Niektóre inne pytania na SO, które mogą być pomocne:

+0

Wygląda dobrze, ale używam systemu Windows ... Czy system Windows zastępuje Valgrind? –

+0

@ Cruz Cruz to bummer ... – celavek

0

W systemie Linux można użyć numeru perf mem do pobierania próbek dostępu do pamięci, w tym pomyłek w bardzo drobny sposób (w tym adres braku), jako described here.