Heim >Backend-Entwicklung >PHP-Problem >Wie viel Speicher belegt das PHP-Array?

Wie viel Speicher belegt das PHP-Array?

PHPz
PHPzOriginal
2023-04-18 15:19:35820Durchsuche

In PHP ist Array ein sehr häufiger Datentyp und eine sehr wichtige Datenstruktur in der Datenverarbeitung. Bei der Verwendung von Arrays liegt der Fokus häufig auf der Leistung und Flexibilität von Arrays. Viele Entwickler kennen jedoch weder die zugrunde liegenden Implementierungsprinzipien von Arrays noch wissen sie, wie viel Speicher Arrays belegen. Dieser Artikel gibt den Lesern eine detaillierte Einführung in die Speichernutzung von PHP-Arrays.

Zunächst müssen wir verstehen, wie Arrays in PHP implementiert werden. Laut der offiziellen PHP-Dokumentation gibt es zwei zugrunde liegende Implementierungen von PHP-Arrays: Hash-Tabellen und geordnete Arrays. Eine Hash-Tabelle ist eine Array-basierte Datenstruktur, und der Index des Arrays kann eine beliebige Ganzzahl oder Zeichenfolge sein. PHP-Array-Hash-Tabellen verwenden einen Hash-Algorithmus, um ein Schlüssel-Wert-Paar schnell zu finden oder einzufügen.

Am Ende des PHP-Arrays befindet sich eine in der C-Sprache implementierte Zval-Struktur. Diese Struktur ähnelt einem Variablencontainer, der zum Speichern von PHP-Variablen verwendet wird. Bei PHP-Arrays entspricht ein Zval einem Array-Element. Eine Hash-Tabelle wird als Array von Zval-Strukturzeigern implementiert. Konkret enthält jedes Element des Arrays zwei zval-Strukturen, eine zum Speichern des Schlüssels und eine zum Speichern des Werts. Daher umfasst der Speicherbedarf eines PHP-Arrays den Speicherplatz für die Schlüssel und Werte sowie den Speicherplatz für das Zeiger-Array, das zum Speichern der Hash-Tabelle verwendet wird.

Wie berechnet man also die Speichernutzung des PHP-Arrays? Wir können den folgenden Code verwenden, um die Speichernutzung eines einfachen Arrays zu testen:

$data = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);

echo memory_get_usage(true);

Beim Ausführen des obigen Codes wird eine Ganzzahl ausgegeben, die die derzeit vom PHP-Skript verwendete Speichergröße angibt. Wenn Sie memory_get_usage() einmal vor der Ausgabe aufrufen, können Sie die von der Skriptausführung selbst verbrauchte Speichergröße ermitteln. Wenn Sie das gesamte Skript ausführen und memory_get_usage() erneut aufrufen, können Sie die vom PHP-Prozess belegte Speichergröße ermitteln. Der Unterschied zwischen diesen beiden Werten ist die Größe des dem Array während der Ausführung dieses Skripts zugewiesenen Speicherplatzes. memory_get_usage(),则可以得到脚本执行本身消耗的内存大小。如果在运行完整个脚本,再调用一次 memory_get_usage(),则可以得到 PHP 进程所占用的内存大小。在这两个值之间的差值就是本次脚本执行过程中分配到数组的内存空间大小了。

例如,在我的电脑上,执行以上代码得到输出值为:4096。这意味着这个简单数组占用了 4096 个字节或 4 KB 内存空间。但是需要注意的是,这个值还包括其他的 PHP 数据类型所占用的内存空间,例如字符串、数字、对象等,因此这个值并不完全准确。

如果想要更准确地计算 PHP 数组所占用的内存空间,我们可以借助 PHP 的内置函数 memory_get_usage()serialize()serialize()

Auf meinem Computer lautet der durch Ausführen des obigen Codes erhaltene Ausgabewert beispielsweise: 4096. Das bedeutet, dass dieses einfache Array 4096 Byte oder 4 KB Speicherplatz einnimmt. Allerdings ist zu beachten, dass dieser Wert auch den von anderen PHP-Datentypen wie Strings, Zahlen, Objekten usw. belegten Speicherplatz einschließt, sodass dieser Wert nicht ganz korrekt ist.

Wenn wir den von PHP-Arrays belegten Speicherplatz genauer berechnen möchten, können wir die integrierten PHP-Funktionen memory_get_usage() und serialize() verwenden. Code >. Die Funktion <code>serialize() kann eine PHP-Variable in einen String serialisieren. Dieser String enthält Informationen wie Variablennamen, Datentyp und Inhalt. Wir können die von einem PHP-Array belegte Speichergröße schätzen, indem wir die Länge der Originalvariablen von der Länge des serialisierten Strings subtrahieren.

Das Folgende ist der Beispielcode:

$data = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);

$size = strlen(serialize($data)) - strlen(var_export($data, true));

echo $size;
Auf meinem Computer kann die Ausführung des obigen Codes einen Ausgabewert von 132 erhalten. Dies bedeutet, dass dieses einfache Array 132 Byte oder 0,132 KB Speicherplatz einnimmt. Diese Schätzung wird von vielen Faktoren beeinflusst, z. B. der Anzahl der Array-Elemente, der Länge der Array-Schlüssel und -Werte usw. Aber egal was passiert, diese Methode kann uns eine relativ genaue Speichernutzung liefern. #🎜🎜##🎜🎜#Abschließend ist zu beachten, dass die Speichernutzung von PHP-Arrays auch von der PHP-Version und -Konfiguration abhängt. Wenn Sie eine ältere PHP-Version haben oder eine geringere Speicherzuweisungsstrategie verwenden, kann der Speicherbedarf größer sein. Wenn Sie häufig große Mengen an Array-Daten verarbeiten müssen, können Sie einige Optimierungsmaßnahmen ergreifen, z. B. die Verwendung der SPL-Datenstruktur oder die Konvertierung der Array-Schlüssel in ganzzahlige Typen, wenn möglich. Dadurch kann der Speicherbedarf des Arrays effektiv reduziert und die Leistung von PHP-Anwendungen verbessert werden. #🎜🎜#

Das obige ist der detaillierte Inhalt vonWie viel Speicher belegt das PHP-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn