Hallo,
ich habe zwei verschiedene Ansätze bei der Klassenprogrammierung. Beim einen wird das veränderte Objekt zurückgegegeben, beim anderen immer ein neues Objekt das verändert wurde.
Hier der Auszug aus beiden Varianten:
Selbes Objekt verändert:
Immer ein neues Objekt:
Nun habe ich beide Varianten getestet indem ich einfach eine for-Schleife benutze und 100mal durchlaufen lassen.
Bei der zweiten Variante werden dadurch 100 Objekte neu erstellt, bei der 1. nur das Objekt verändert.
Folgende Ausgabe habe ich:
Es ist nur ein geringer Unterschied zu sehen. Selbst bei 1000 Schleifendurchläufen ist der Unterschied sehr gering.
Kann mir das jemand erklären? Warum ist der Verbrauch bei der Variante wo jedes mal ein neues Objekt erstellt wird doch nur geringfügig größer.
Gruß
ich habe zwei verschiedene Ansätze bei der Klassenprogrammierung. Beim einen wird das veränderte Objekt zurückgegegeben, beim anderen immer ein neues Objekt das verändert wurde.
Hier der Auszug aus beiden Varianten:
Selbes Objekt verändert:
PHP:
public function concat($string) {
$this->string .= $string;
return $this;
}
Immer ein neues Objekt:
PHP:
public function concat($string) {
$this->string .= $string;
return new self($this->string);
}
Nun habe ich beide Varianten getestet indem ich einfach eine for-Schleife benutze und 100mal durchlaufen lassen.
PHP:
for($i = 2; $i < 100000; $i++) {
$string = $string->concat($i);
}
Bei der zweiten Variante werden dadurch 100 Objekte neu erstellt, bei der 1. nur das Objekt verändert.
Folgende Ausgabe habe ich:
Code:
Immer neue Objekte:
Start: 344880
Ende: 345544
Differenz: 664
Immer das selbe Objekt:
Start: 345128
Ende: 345712
Differenz: 584
Es ist nur ein geringer Unterschied zu sehen. Selbst bei 1000 Schleifendurchläufen ist der Unterschied sehr gering.
Kann mir das jemand erklären? Warum ist der Verbrauch bei der Variante wo jedes mal ein neues Objekt erstellt wird doch nur geringfügig größer.
Gruß