Anzeige
Die Arrays in PHP7 benötigen weniger Speicher.
Die Arrays in PHP7 benötigen weniger Speicher. (Bild: PHP.net)

PHP7: PHP reduziert Array-Speicherbedarf deutlich

Die Arrays in PHP7 benötigen weniger Speicher.
Die Arrays in PHP7 benötigen weniger Speicher. (Bild: PHP.net)

Die neuen Hashtabellen in PHP reduzieren den Speicherbedarf für Arrays deutlich, was auch die Leistung der Sprache steigert. Die finale Veröffentlichung ist für den Herbst nächsten Jahres geplant.

Anzeige

Leistungssteigerungen um bis zu 30 Prozent haben die PHP-Entwickler mit einer frühen Version der neuen Engine verzeichnen können. In einem aktuellen Blogeintrag erklärt Nikita Popov die neue Implementierung der Hashtabellen in PHP. Diese soll ersten Angaben zufolge auf 64-Bit-Systemen bis zu dreieinhalb Mal weniger Speicher benötigen als die vorherige.

In PHP werden Arrays in geordneten Listen von Schlüssel-Wert-Paaren gespeichert, die Zuordnung von Schlüssel und Wert geschieht dabei mittels Hashtabellen. Darüber hinaus sind Arrays in PHP entsprechend dem Hinzufügen von neuen Elementen geordnet statt etwa strikt alphanumerisch.

Interna stark verändert

Genutzt wird in der neuen Engine eine leicht angepasste Variante der internen Datenstruktur für alle Variablen - der Zvals. Diese nutzt auch die Hashtabelle, deren einzelnen Einträge, die sogenannten Buckets, nun direkt ein Zval enthalten. Das reduziert die notwendigen Speicherzuweisungen.

Ebenso sind die Buckets selbst direkt in der Hashtabelle enthalten. Zuvor ist ein eigenständiges Array von Zeigern auf die Buckets verwendet worden, um Letzteren separat Speicher zuweisen zu können. Dadurch werden die Alloc- und Free-Operation auf dem Speicher ebenfalls deutlich reduziert.

Werden zudem beim Arbeiten mit dem Array Elemente gelöscht, bekommen diese zunächst den Zval-Wert IS_UNDEF. Kommen anschließend neue Werte hinzu, werden erst die undefinierten Stellen wieder "aufgefüllt", bevor dem Array notwendigerweise neuer und größerer Speicherplatz zugewiesen wird.

Darüber hinaus ist die Suche nach den richtigen Werten in der Hashtabelle beschleunigt worden, und falls ein Array ausschließlich aus aufsteigenden ganzzahligen Werten (Integern) besteht, wird die Hashtabelle komplett übergangen. Stattdessen werden direkt die Indizes verwendet. Letztlich wird auch nur dann Speicher für Hashtabellen und Werte zugewiesen, falls tatsächlich mindestens ein Element hinzugefügt wird. Für ein zunächst leeres Array werden also ebenso weniger Operationen auf dem Speicher ausgeführt.

Deutlich weniger Speicher

Popov listet abschließend sehr deutlich auf, dass in der vorherigen Implementierung auf einem 64-Bit-System 144 Byte für jedes Element belegt werden mussten. Mit der neuen Struktur werden nur noch lediglich 36 Byte oder gar noch weniger benötigt - ein Viertel des Ursprungswertes. Dabei bleibe die eigentliche Hashtabelle jedoch außen vor.

Der Entwickler gibt jedoch zu bedenken, dass das Einbetten der Datentypen ineinander auch Nachteile haben kann. So werde etwas mehr ungenutzter Speicher als vorher belegt. Das Füllen eines Arrays mit dem gleichen Wert hat ebenfalls auf die neue Implementierung keinen Einfluss. In der alten Version führte dies noch zu einem leicht reduzierten Speicherbedarf.

Zwar seien die angegebenen Daten in vielen anderen Fällen wohl viel zu optimistisch, dennoch werde mit der neuen Technik wahrscheinlich immer weniger Speicher benötigt als zuvor. Die notwendigen Operationen werden ebenfalls reduziert, was die Leistung der Arrays deutlich steigert. Auch das API zum Zugriff auf die Arrays und Hashtabellen soll wesentlich verbessert worden sein.

Die neue Engine mit den beschriebenen Verbesserungen soll aktuellen Planungen zufolge im Herbst 2015 mit PHP 7 veröffentlicht werden.


eye home zur Startseite
maerchen 27. Dez 2014

Survival of the fittest. Anscheinend ist das Gesamtkonzept so gut, dass es sich mehr oder...

xUser 26. Dez 2014

Sind natürlich alles Idioten bei PHP: Theres probably some other directions one...

tibrob 26. Dez 2014

Manchmal habe ich das Gefühl, die "echten" Programmierer fühlen sich nur auf den Schlips...

Bonita.M 24. Dez 2014

Du kannst davon ausgehen, dass es schneller ist den Hashwert zu bilden als durch den Baum...

andi_lala 24. Dez 2014

Vielleicht hat er ja folgendes gemeint ;) http://en.wikipedia.org/wiki/Answer_set_programming

Kommentieren



Anzeige

  1. Softwareentwickler (m/w) Java/C#
    D.O.M. Datenverarbeitung GmbH, Nürnberg
  2. Integration Manager Processes and IT (m/w)
    Robert Bosch GmbH, Leinfelden-Echterdingen
  3. Java Software-Entwickler (m/w)
    Clausohm-Software GmbH, Neverin, Berlin, Aachen
  4. Leiter (m/w) Produktmanagement Traffic Software
    PTV GROUP, Karlsruhe

Detailsuche



Anzeige
Blu-ray-Angebote
  1. NUR BIS SONNTAG: 3 Blu-rays für 20 EUR
    (u. a. Spaceballs, Anastasia, Bullitt, Over the top, Space Jam)
  2. Game of Thrones [dt./OV] Staffel 6
    (jeden Dienstag ist eine neue Folge verfügbar)
  3. VORBESTELLBAR: Batman v Superman: Dawn of Justice Ultimate Collector's Edition (inkl. 3D-Steelbook & Batman Figur) (exklusiv bei Amazon
    139,99€

Weitere Angebote


Folgen Sie uns
       


  1. Ultra Compact Network

    Nokia baut LTE-Station als Rucksacklösung

  2. Juniper EX2300-C-12T/P

    Kompakt, lüfterlos und mit 124 Watt Powerbudget

  3. Vorratsdatenspeicherung

    Alarm im VDS-Tresor

  4. Be Quiet Silent Loop

    Sei leise, Wasserkühlung!

  5. Kryptowährung

    Australische Behörden versteigern beschlagnahmte Bitcoins

  6. ZUK Z2

    Android-Smartphone mit Snapdragon 820 für 245 Euro

  7. Zenbook 3 im Hands on

    Kleiner, leichter und schneller als das Macbook

  8. Autokauf

    Landgericht Köln entdeckt, dass SMS sich löschen lassen

  9. Toughpad FZ-B2 Mk 2

    Panasonic zeigt neues Full-Ruggedized-Tablet mit Android

  10. Charm

    Samsungs Fitness-Tracker mit langer Laufzeit kostet 30 Euro



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Traceroute: Wann ist ein Nerd ein Nerd?
Traceroute
Wann ist ein Nerd ein Nerd?

Formel E: Monaco-Feeling beim E-Prix in Berlin-Mitte
Formel E
Monaco-Feeling beim E-Prix in Berlin-Mitte
  1. Hewlett Packard Enterprise "IT wird beim Autorennen immer wichtiger"
  2. Roborace Roboterrennwagen fahren mit Nvidia-Computer
  3. Elektromobilität BMW und Nissan wollen in die Formel E

Moto G4 Plus im Hands on: Lenovos sonderbare Entscheidung
Moto G4 Plus im Hands on
Lenovos sonderbare Entscheidung
  1. Lenovo Moto G4 kann doch mit mehr Speicher bestellt werden
  2. Android-Smartphone Lenovos neues Moto G gibt es gleich zweimal
  3. Motorola Aktionspreise für aktuelle Moto-Smartphones

  1. Re: 8 Kerne 250¤

    Rulf | 03:12

  2. Re: Dezibel? sehr leise?

    ms (Golem.de) | 03:12

  3. Re: Tickrate

    Shiv0r | 02:57

  4. Re: Wenn Tim Cook aus dem Fenster springt.....

    User_x | 02:55

  5. Re: OEM ist Alphacool

    ms (Golem.de) | 02:48


  1. 19:26

  2. 18:41

  3. 18:36

  4. 18:16

  5. 18:11

  6. 17:31

  7. 17:26

  8. 16:48


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel