Rolf B: Mehrere Fragen bezüglich mehrere Tests großer Datenmengen

Beitrag lesen

Hallo T-Rex,

Gibt es eine Möglichkeit zu sehen welche Variablen / Arrays / Objekte in einem Objekt wie viel Speicherplatz verbrauchen?

Jein.

Problem 1: Es gibt keine Funktion "get_used_memory($a)" oder so. Es gibt memory_get_usage, aber das ist der insgesamt belegte Speicher von PHP.

Problem 2: Eine solche Funktion kann irreführend sein. Gerade bei Arrays und Objekten können Querbeziehungen existieren - ein Objekt könnte in mehreren Arrays stehen.

$arr1 = [ "Hallo", "Welt" ];
$arr2 = [ "Self", "HTML" ];

$arr3 = [ $arr1, $arr2 ];
$arr4 = [ $arr1, $arr2 ];

Es gibt den „Tipp“, strlen(serialize($a)) zu verwenden, um einen Daumenwert für den Speicherbedarf von $a zu erhalten. Mein Tipp wäre das nicht - es hat nur grob was mit dem real belegten Speicher zu tun und ist vor allem eine teuere und speicheraufwändige Operation. Vor allem: wenn Du das stumpf für $arr1 bis $arr4 machst und zusammenzählst, kommst Du auf einen viel zu hohen Wert. De facto wird der Speicher im Wesentlichen von $arr1 und $arr2 belegt. $arr3 und $arr4 enthalten nur Verweise auf dem Speicher von $arr1 und $arr2.

Rolf

--
sumpsi - posui - obstruxi