Zum Inhalt springen

Speicherverbrauch einer Datenstruktur

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

Antwort: 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.

Formel

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

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

Symbole und Einheiten in der Formel
SymbolBedeutungEinheit
antal_elementerAntal elementerstk.
byte_pr_elementDatatype—
=Samlet hukommelsesforbrugMB
=Samlet hukommelsesforbrug (bytes)bytes

Gültigkeit und Quelle

Quelle
IEEE 754 (flydende decimal-standard) + almindelige programmeringssprogs heltalsstørrelser

Gilt nicht, wenn

  • 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.

Rechenbeispiel

Die eigenen Standardwerte des Rechners sind eingesetzt. Die Zahlen sind mit genau der Formel berechnet, die das Werkzeug verwendet.

Sat ind

  • Antal elementer1.000 stk.
  • Datatype8

Geber

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

Der Rechner selbst ist gesperrt

Lege einen kostenlosen Zugang an, um alle Artikel, Rechner, Vorlagen und das Sortiment freizuschalten — und Zugriff auf Quizze und Klassen zu erhalten. Es dauert unter einer Minute: Name, E-Mail und ein Passwort. Keine Zahlungskarte.

Willst du zuerst etwas ausprobieren? Sieh, was du ohne Konto nutzen kannst — der Junior-Bereich, das Lexikon, die Videos und mehr.

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.

Schritt für Schritt

  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.

Typische Fehler

  • 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.

Beispiele aus dem Alltag

Måledata som double

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

Antal elementer
1.000.000 Stk.
Datatype
64-bit heltal / double (8 byte, IEEE 754 double precision)

Es bedeutet: 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 Stk.
Datatype
32-bit heltal / float (4 byte, IEEE 754 single precision)

Es bedeutet: 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 Stk.
Datatype
byte / bool (1 byte)

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

Faustregel

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

So überprüfst du die Antwort

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