phpbar.de logo

Mailinglisten-Archive

[php] PHP - Performance zusammen mit postgresql

[php] PHP - Performance zusammen mit postgresql

Egon Schmid eschmid_(at)_s.netic.de
Tue, 24 Aug 1999 22:06:18 +0200


Florian Baumert wrote:
> 
> Ich  habe  das  Problem  jetzt  lokalisiert,  es  ist  ein  echtes PHP
> Performanceproblem.  Ich habe ein paar Klassen mit ca. 20 Datamembers.
> Diese  spiegeln  mir  einzelne  Suchabfragen  wieder. Nun gibt es eine
> Klasse Basket, die hat ein Array von BasketItems (auch Klassen).
> 
> Will ich diese updaten, ist der erste (naive) Ansatz
> 
> for ($Index = 0; $Index < sizeof($this->Items); ++$Index)
>     {
>     $this->Items[$Index]->Quantity += $Quantity;
>     }
> 
> Geht aber net!!!
> 
> Also, zweiter Ansatz:
> 
> for ($Index = 0; $Index < sizeof($this->Items); ++$Index)
>     {
>     $Tmp = $this->Items[$Index];
>     $Tmp->Quantity += $Quantity;
>     $this->Items[$Index] = $Tmp;
>     }
> 
> Wenn  Items Klassen mit ca. 20 Datamembers beinhaltet, braucht PHP für
> ein  7  (SIEBEN!!!)  Item grosses Array sage und schreibe 4 (VIER!!!)
> Sekunden. Auf einem 333er mit 256Mb.
> 
> Naja, Lösung (wenn auch wirklich SUPER UNSAUBER!)
> 
> function updateItem(&$Items, $Quantity)
>    {
>    for ($Index = 0; $Index < sizeof($Items); ++$Index)
>         {
>         $Items[$Index]->Quantity += $Quantity;
>         }
>    }
> 
>  updateItems($this->Items);
> 
> Dann dauert das ganze nur 0.7 Sekunden!!
> 
> Ändert sich das Dilemma in 4.0?

Wahrscheinlich nicht, denn das Ganze OO-Geraffel muß auch noch
kompiliert werden. Je mehr Datamembers (wenn Du damit die Anzahl $Items
meinst) desto schneller. Aber warum probierst Du das nicht mal selber
aus. Oder kannst Du mal zu Testzwecken die normale Programmierweise
benutzen und die Zeiten stoppen.

-Egon


php::bar PHP Wiki   -   Listenarchive