OOP-Performance: Parameter vs Variablen-Deklaration
jojojo
- php
0 mrjerk
Hallo.
Was ist schneller? Ein Objekt einer Klasse in einer Klassen-Variable zu speichern und eine 2. Methode greift dann darauf zu oder das Klassenobjekt per Parameter weiterzugeben?
Grüße, jojojo
Hallo,
Geschwindigkeitsmäßig dürfte es nur wenig Unterschied geben, ich tippe aber darauf, dass die Lösung mit der Klassenvariable einen Tick schneller ist:
Greifst Du auf die Klassenvariable zu, vermute ich, dass PHP intern bei einem Methodenaufruf die Referenz auf deine Klasse auf den Stack der Methode kopiert.
Rufst Du hingegen die Methode mit dem Objekt als Parameter auf, dann muss der Methodenstack ja TROTZDEM eine Referenz auf Deine Klasse besitzen (damit er bei Bedarf auf andere Methoden u. Eigenschaften zugreifen kann) und ZUSÄTZLICH übergibst Du dem Methodenstack dann noch eine Referenz auf Dein Objekt.
Das ist zwar nicht so tragisch, weil Objekte via "Call By reference" übergeben werden, Du also nur eine REFERENZ (= Speicheradresse) auf Deine Variable übergibst. Trotzdem, der Stack Deiner Methode benötigt mimimal mehr Speicher (32 bzw. 64 Bit um genau zu sein).
Wenn sich jetzt die Methode noch ein paar Mal selbst aufruft, und jedesmal die Referenz auf Deine Variable kopiert wird, steigt der Speicherbedarf immer weiter an.
=> Mehr Speicher = Mehr Cache Misses = Mehr Kopieroperationen zwischen Cache und Arbeitsspeicher = langsamer.
Alles aber nur theoretisch und vermutlich kaum messbar.
Und obs stimmt weiss ich auch nicht, nur meine Überlegung so....bin mal auf die anderen Antworten gespannt.
Viele Grüße,
Jörg