Mailinglisten-Archive |
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