Odczytywanie danych z duuużej tablicy - kolejność

0

Cześć,
chciałem się zapytać o taką rzecz: mam duuużą tablicę dynamiczną jakiś obiektów, która nie mieści się na 1 stronie w pamięci. Np.

vector<DuzyObiekt> obiekty; obiekty.resize(1000000);

Załóżmy, że powyższa tablica zajmuje 1GB RAM.

Moje pytanie brzmi:
czy ma znaczenie dla wydajności programu czy ja będę odczytywał wartości z tej tablicy od początku do końca czy odwrotnie tj. od końca do początku?
Podkreślam, że chodzi jedynie o odczytywanie danych a nie ich modyfikacja, kasowanie etc.

Z góry dziękuję za udzielone informacje.

2

Dostęp obu kierunkach powinien być równie szybki (procesory mają prefetching w obu kierunkach iteracji, przynajmniej te w miarę nowe).

Jeśli chodzi o usuwanie elementów z takiego wektora - to może być dość powolne, bo trzeba przenieść wszystkie dalsze elementy o n miejsc w tył, ale piszesz, że to nie jest istotne.

Swoją drogą, istotnym dla takich rozważań jest fakt, czy DuzyObiekt jest faktycznie obiektem, który czytasz, czy ma też wskaźniki do danych - wtedy wygląda to zupełnie inaczej.

0

@kq dzięki za odpowiedź.
Nie, obiekty nie odwołują się do innych miejsc w pamięci (nie posiadają wskaźników).
Rozumiem, że te starsze procesory preferują odczytywanie od początku tablicy do końca a nie na odwrót?

0

Tak jest, ale jeśli chodzi o konkretne modele to nie jestem w stanie pomóc. Ta odpowiedź na SO wygląda fajnie: http://stackoverflow.com/a/1951271/2456565

1 użytkowników online, w tym zalogowanych: 0, gości: 1