Przejdź do treści

Zużycie pamięci dla struktury danych

Hvor mange MB fylder en liste med X elementer af denne datatype i hukommelsen (uden sprog-overhead)?

Odpowiedź: Grundlæggende datatypers størrelse i hukommelsen er defineret af sprogets specifikation eller af standarder som IEEE 754 for flydende tal. Ved at gange antal elementer med bytes pr. element får man et overslag over den rå hukommelse, en simpel liste eller et array optager — nyttigt når man skal vurdere, om en datastruktur kan holdes i RAM, eller om den kræver strømmet/disk-baseret behandling.

Wzór

samlet hukommelse (bytes) = antal elementer × bytes pr. element

Eksempel: 1.000 elementer × 8 byte (double) = 8.000 bytes = 0,008 MB

Symbole i jednostki we wzorze
SymbolZnaczenieJednostka
antal_elementerAntal elementerstk.
byte_pr_elementDatatype—
=Samlet hukommelsesforbrugMB
=Samlet hukommelsesforbrug (bytes)bytes

Ważność i źródło

Źródło
IEEE 754 (flydende decimal-standard) + almindelige programmeringssprogs heltalsstørrelser

Nie dotyczy, gdy

  • Reelt hukommelsesforbrug i høj-niveau-sprog (fx Python- eller Java-objekter) er ofte betydeligt højere pga. objekt-headers og garbage collector-overhead — beregningen viser kun den rå datastørrelse.

Przykład obliczeniowy

Wstawiono domyślne wartości kalkulatora. Liczby obliczono dokładnie tym wzorem, którego używa narzędzie.

Wstawiono

  • Antal elementer1000 stk.
  • Datatype8

Dawca

  • Samlet hukommelsesforbrug0,008 MB
  • Samlet hukommelsesforbrug (bytes)8000 bytes

Sam kalkulator jest zablokowane

Utwórz bezpłatne konto, aby odblokować wszystkie artykuły, kalkulatory, szablony i asortyment — i uzyskać dostęp do quizów i klas. Zajmuje to poniżej minuty: imię, email i hasło. Żadna karta kredytowa.

Chcesz najpierw czegoś spróbować? Zobacz, czego możesz używać bez konta — strefa junior, leksykon, filmy i więcej.

Sådan bruger du den

Når et script eller en tjeneste skal holde store datamængder i RAM, fx loglinjer eller sensormålinger, skal du vide om det kan være der. Beregneren regner den rå hukommelse ud fra antal elementer og datatype.

Krok za krokiem

  1. Tæl elementerne: rækker, målinger eller tegn.
  2. Find datatypens størrelse: 1, 2, 4 eller 8 byte.
  3. Gang de to tal. Det er den rå hukommelse i byte.
  4. Læg sprogets overhead til. I Python eller Java kan objekter fylde mange gange mere.

Typowe błędy

  • At regne Python-lister som rå data. Et Python-tal er et objekt på ca. 28 byte plus en reference på 8.
  • At forveksle MB (1.000.000 byte) og MiB (1.048.576 byte).
  • At glemme at strenge i UTF-8 fylder 1-4 byte pr. tegn, ikke altid 1.

Przykłady z codzienności

Måledata som double

Et overvågningsscript gemmer 1 million temperaturmålinger fra et serverrum som 64-bit tal.

Antal elementer
1 000 000 szt.
Datatype
64-bit heltal / double (8 byte, IEEE 754 double precision)

To znaczy: De rå data fylder 8 MB (8 000 000 bytes). Det er småt i RAM.

Sensorlog med 32-bit heltal

En IoT-gateway samler 10 millioner målinger som 32-bit heltal, før de sendes videre.

Antal elementer
10 000 000 szt.
Datatype
32-bit heltal / float (4 byte, IEEE 754 single precision)

To znaczy: Det fylder 40 MB. Gatewayen har 512 MB, så det kan være der, men ikke mange gange.

Flag for 100 millioner poster

Et oprydningsjob skal markere 100 millioner poster som behandlet eller ej.

Antal elementer
100 000 000 szt.
Datatype
byte / bool (1 byte)

To znaczy: Som byte fylder det 100 MB. Som bit-array ville det kun være en ottendedel.

Reguła praktyczna

1 million double = 8 MB. 1 million int32 = 4 MB.

Jak sprawdzić odpowiedź

Mål med sys.getsizeof i Python, sizeof i C eller hukommelsesprofileren i dit miljø.