Die Leistung eines assoziativen Arrays in PHP

December 23

Die Leistung eines assoziativen Arrays in PHP

PHP ist eine Server-basierte Sprache für interaktive Webanwendungen erstellen und Rendern von Benutzerinhalt auf Nachfrage. Es unterstützt eine Vielzahl von Daten Auflistungsklassen in seiner Array-Konstrukt, einschließlich indizierte Arrays und assoziative Arrays. Mit einer großen Anzahl von Benutzern kann die Leistung des Codes ein Problem dar. Obwohl assoziative Arrays bedeutende CPU-Overhead nicht benötigen, brauchen sie mehr Speicher im RAM gespeichert, wie Ihr Programm ausgeführt wird.

Indizierte Arrays

Ein Norm indiziertes Array in PHP und andere Sprachen enthält eine Reihe von Folgewert Indizes, Datenwerten zugeordnet. Ein Datenwert erfolgt durch einen Verweis auf den Index oder die Position im Array.

$my_array = Array (1, 2, 3, 4, 5);

Zugriff auf das Element "$my_array [0]" zurück den Wert 1. Indizierte Arrays sind am besten für die Speicherung und den Zugriff auf strukturierte Daten. Es wäre ineffizient, die folgenden Schritte ausführen, wie es die Lücken in der Indexwerte, wobei eine sehr große Menge an Speicher füllen würde:

$my_array [] = 7;$my_array [13] = 5;$my_array [76] =-4;

Assoziative Arrays

Im Gegensatz zu indizierten Arrays enthalten PHP assoziativen Arrays eine Reihe von Schlüssel-Wert-Paaren. Die Datenwerte erfolgt durch einen Verweis auf den Schlüssel, der eine eindeutige Zeichenfolge oder numerischer Wert sein kann. Ineffiziente Beispiel oben kann besser als assoziatives Array geschrieben werden:

$my_array (0 = > 5, 13 = > 5, 75 = >-4);$my_array ("eins" = > 1, "zwei" = > 2, "siebzehn" = > 17);

CPU-Leistung

PHP ist optimiert für die Verarbeitung von Zeichenketten. Ein String als Schlüssel für ein assoziatives Array mit nicht viel Aufwand erzeugen. Beim Zugriff auf ein Element in einem assoziativen Array in PHP ist nicht das Array gesucht, von Anfang bis Ende um festzustellen, ob der Schlüssel überein. Stattdessen ordnet einen Schlüssel in ein assoziatives Array zu einem Indexwert mit keine zusätzlichen Overhead Lookup rechtzeitig über indizierte Arrays.

Speicherleistung

Da PHP assoziativen Arrays ein Schlüssel-Wert-Paar, im Gegensatz zu nur einen Wert speichern, benötigen sie zusätzliche Gemeinkosten, Speicherplatz, die Ihr Programm während der Ausführung, im RAM verwendet, im Vergleich zu indizierten Arrays. Dieser zusätzliche Speicher wird normalerweise vernachlässigbar, wenn Sie sehr große Arrays verwenden. In diesem Fall kann es besonnen sein, sehr große Arrays in eine Teilmenge der Arrays aufzuteilen, die nach Bedarf zugegriffen werden kann.