phpbar.de logo

Mailinglisten-Archive

[php] Speicherverbrauch von Arrays

[php] Speicherverbrauch von Arrays

Peter Bieling network at media-palette.de
Mit Jul 7 09:17:01 CEST 2004


Tom Horstmann wrote:

> php-arrays keine reinen arrays sondern hash-Tabellen. Deshalb
> muss nicht nur der Wert jedes Elements, sondern auch noch ein
> paar Zeiger darauf und schlimmstenfalls noch ein key dazu
> gespeichert werden.
> Zusätzlich wird Speicher immer in festen Blockgrössen alloziiert.
> Wenn Du also nacheinander 2Mio * 1 byte belegen willst, wird
> eigentlich 2Mio * 1 * z.B. 32 byte belegt.

Hallo Tom und Liste,

ich habe gerade mal einen Benchmarktest gemacht, der vielleicht in 
diesem Zusammenhang ganz interessant ist:

<?php
$repeat=5000000;
$a="";
$b="";
$c="";
$d="";
$e="";

$wert1 = "Sessel";
$wert2 = "Stuhl";
$wert3 = "Tisch";
$wert4 = "3947509345";
$wert5 = "oi345poi3453434";

$arr= array("","","","","");

require_once("Benchmark/Timer.php");
$timer =& new Benchmark_Timer(true);

for ($i = 0; $i < $repeat; $i++) {
     $a = $wert1;
     $b = $wert2;
     $c = $wert3;
     $d = $wert4;
     $e = $wert5;
}
$timer->setMarker('Marker 1');

for ($i = 0; $i < $repeat; $i++) {
     $arr[0] = $wert1;
     $arr[1] = $wert2;
     $arr[2] = $wert3;
     $arr[3] = $wert4;
     $arr[4] = $wert5;
}
?>

=================
Im ersten Fall werden 5 einfache Variablen verwendet, im zweiten Fall 
ein Array. Die erste Variante ist etwa 10% schneller.


Marker 1 1089183951.91049400  8.873300 44.87%
Stop     1089183962.81416300 10.903669 55.13%
total -                      19.776969 100.00%

Viele Grüße

Peter
-- 
http://www.media-palette.de/tools/xml-line/





php::bar PHP Wiki   -   Listenarchive