phpbar.de logo

Mailinglisten-Archive

AW: [php] call by reference - performance

AW: [php] call by reference - performance

Nils Meyer php_(at)_phpcenter.de
Tue, 11 Dec 2001 21:08:35 +0100


Hallo,

Am Dienstag, 11. Dezember 2001 um 20:13 schrieb Jochen Metzger:

> bei auruf:
> $name="hans";
> peter($name);

> Bei peter($name) wird eine Kopie der Variable $name angelegt und an die
> function übergeben.

> Anders bei der Referenz
> z.B. peter(&$name)

> hier wird nur eine Referenz (ein Verweis) auf die Variable angelegt, d.h.
> die Variable wird nicht kopiert, sondern es wird der function nur übergeben,
> wo im Speicher sie die Variable finden kann.

> Das spart Speicher und kann (glaube ich zumindest) auch zugunsten der
> Performance gehen.

Ich kenne das als Adressoperator. Nachteil bei der Sache ist, dass die
Variablen direkt von der Funktion vergewaltigt werden, wenn man also
einmal einen neuen Wert aus dem Ausgangswert berechnen will, diesen
aber behalten möchte, ist davon abzuraten.

Ich denke es ist auch eher deswegen eingeführt, und nicht um speicher
zu sparen. z.B. bei trim() spart man sich etwas schreibarbeit:

$nils = trim($nils);
entspricht dann
trim(&$nils);

Ich denke im übrigen nicht, dass damit viel speicher gespart werden
kann, da - hoffe ich jedenfalls - für die Variablen einer Funktion
allozierter Speicher nach Ausführung der selben wieder freigegeben
wird (ausser bei static). Oder so. Demnach würde dieser Vorteil nur
sekundenbruchteile ausgenutzt, und dass in einer tausendstelsekunde
viele konkurrierende Zugriffe erfolgen wage ich zu bezweifeln (wenn
ich mich irre, bitte nicht mehr auf den Kopf zielen, ok?).


mit freundlichen Grüßen,
 Nils Meyer <mailto:meyer_(at)_wmc24.de>

-- 
Nils Meyer . Eichenweg 7 . 21745 Hemmoor
t: +49 (0)4771 68 98 80  | http://www.nmeyer.com
f: +49 (0)4771 68 98 27  | http://www.clickad24.de
m: +49 (0)174 20 34 08 5 | 


php::bar PHP Wiki   -   Listenarchive