77 Stimmen

Ist die Übergabe per Referenz in PHP (>= 5.0) schneller?

In PHP können Funktionsparameter als Referenz übergeben werden, indem dem Parameter in der Funktionsdeklaration ein kaufmännisches Und vorangestellt wird, etwa so:

function foo(&$bar)
{
    // ...
}

Ich bin mir bewusst, dass dies eine no um die Leistung zu verbessern, sondern um den Funktionen die Möglichkeit zu geben, Variablen zu ändern, die normalerweise außerhalb ihres Anwendungsbereichs liegen.

Stattdessen scheint PHP Copy On Write zu verwenden, um das Kopieren von Objekten (und vielleicht auch Arrays) zu vermeiden, bis sie geändert werden. Bei Funktionen, die ihre Parameter nicht ändern, sollte der Effekt also derselbe sein, als wenn Sie sie per Referenz übergeben hätten.

Ich habe mich jedoch gefragt, ob die Logik "Copy On Write" vielleicht bei der Weitergabe durch Verweis kurzgeschlossen ist und ob dies Auswirkungen auf die Leistung hat.

ETA: Um sicherzugehen, gehe ich davon aus, dass es nicht schneller geht, und ich bin mir bewusst, dass dies nicht der Zweck von Referenzen ist. Ich denke also, dass meine eigenen Vermutungen ziemlich gut sind, ich suche nur nach einer Antwort von jemandem, der wirklich weiß, was unter der Haube passiert. In fünf Jahren PHP-Entwicklung habe ich es immer als schwierig empfunden, qualitativ hochwertige Informationen über PHP-Interna zu erhalten, wenn man nicht gerade den Quellcode liest.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X