Sven Rautenberg: PHP - Mysql -> Zweidimensionales Array erzeugen

Beitrag lesen

Moin!

Der String wäre ja dann, wenn man annimmt das die Ausdehnung der Karte 1000x1000 Felder groß ist, auch enorm groß: 1.000.000 Zeichen...

Nur eine Million Zeichen.

Wenn du das vergleichst mit dem riesigen Overhead, den ein Array von Arrays in PHP benötigt. Da hast du mindestens auch ein Byte pro Feld für true/false. Außerdem für jedes Feld den Index (1, 2, 3). Sind, wenn man Strings verwendet, zwischen ein und vier Byte pro Feld, bei Integern immer vier Byte (32 Bit). Macht also schon mal 5 Millionen Bytes.

Dann fehlen noch Speicherzeiger, denn die PHP-Arrays sind in Wirklichkeit eine Liste.

Du siehst: Der String ist wirklich extrem speichersparend im Vergleich zu Arrays.

Außerdem müsste ich dann bei jedem Schleifendurchlauf die Position ermitteln, was wieder mehr Rechenaufwand verursacht...

Rechenaufwand gegen Speicheraufwand. Wenn der reale Speicher nicht mehr ausreicht, wird ausgelagert (oder das Skript wegen zu großer Speichernutzung abgebrochen).

Hast du den Rechenaufwand schon mal nachgemessen? Wieviel Prozent langsamer ist das?

Meine Frage war ja nur, ob es schon eine vorhandene Funktion in PHP gibt, welches das Result einer MySQL Abfrage gleich als zweidimensionales Array ausgibt: $array['pos_x']['pos_y'] ??

Und die Antwort war, dass so riesige mehrdimensionale Arrays in PHP nicht wirklich ideal zu handhaben sind. Wenn du auf Performance Wert legst, mußt du optimieren. Und das geht eben nicht mit normalen Arrays, sondern mit spezialisierteren Speichermethoden.

- Sven Rautenberg

--
"Love your nation - respect the others."