← Back to team overview

sslug-teknik team mailing list archive

SV: Allokering af store mængder hukommelse

 


Jeg skal til at lave et program, som skal manipulere ca. 50 millioner
>datastrukturer på 160 bytes hver...altså en fandens masse.
>På en 64 bit maskine burde det hele jo kunne være i virtuel hukommelse,
>men er det den mest optimale måde at gøre det på ?
>
>Jeg regnede med at allokere hukommelse til at indeholde strukturerne, og
>så allokere hukommelse til pointere eller træstruktur knuder eller sådan
>noget som er lidt nemmere at flytte rundt.
>
>Er det måden at gøre det på ? Skal jeg bruge malloc() eller memory mappe
>/dev/null eller er der en smartere måde ?
>
>

Hej Robert,

Det er jo kun omkring 8 GB, så jeg ville da smide det hele op i RAM.  Hvis altså du har 8 G i maskinen :-). Der er jo ingen problemer med at addressere det med 64-bit kode.

Memory mapper du en fil kan det blive rigtig langsomt hvis du hopper tilfældigt rundt i strukturen. Selv med alle data i RAM bør du stadig forsøge at få algoritmen til at tilgå memory så lineært og blokvist du kan for at maximere brugen af cache.

Mvh
-- Jan

Follow ups

References