sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #102029
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