Cześć,
mam takie trochę techniczne pytanie:
Piszę program w C++. Powiedzmy, że rezerwuję duuużą tablicę (np. 1mln elementów) jakiś obiektów, które łącznie zajmują powiedzmy 1GB.
Obiekty maja jedynie stałe elementy tzn. nie ma w nich tablic dynamicznych.
Następnie poruszam się po tej tablicy od 0 do N-1, gdzie N-1 to ostatni index tablicy.
Robię tak nieokreśloną liczbę razy (pętla while(true)).
Pamięć RAM podzielona jest na strony - zdaje się 4KB.
A moje pytanie brzmi: jak duże znaczenie ma zmiana strony pamięci przy iterowaniu przez taką tablicę po kolei?
Tzn. gdy mam pętlę:
for(unsigned i=0; i<size; ++i)
DoSomethingWhtiData(tablica[i]);
to jak duże znaczenie ma zmiana danych z tablica[i] na tablica[i+1], gdy tablica[i] jest na jednej stronie a i+1 jest na drugiej stronie?
Co jeśli w takim obiekcie jest wskaźnik na inny obiekt z tej tablicy ale przesunięty o N elementów do przodu lub do tyłu?
Czy są jakieś mechanizmy, które optymalizują dostęp do danych przy tak dużych obiektach, gdy one są w jednym bloku pamięci (tablica)?
Z góry dziękuję za wyjaśnienie.