phpbar.de logo

Mailinglisten-Archive

[php] PHP - Performance zusammen mit postgresql

[php] PHP - Performance zusammen mit postgresql

Florian Baumert baumert_(at)_plt.de
Tue, 24 Aug 1999 20:25:50 +0200


Hi Dante,

> wie sehen denn deine DB-Abfragen aus?
> 
> Vielleicht k�nntest du die Abfragen optimieren, indem du komplexere
> Statements reibst, so dass nur noch eine bzw. sehr wenige DB-Abfragen
> ben�tigt werden.
> 
> K�nntest ja mal die relevanten Stellen aus deiner Klasse kopieren..

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?

Gru�

    Florian

                      \\|||//
                      |     |
                      (.) (.)
===================oOO==(_)==OOo=========================
! Florian Baumert                                       !
? Feldbergstr 44                                        ?
! D-61140 Oberursel                                     ?
! Tel.: 0172 59 35 0 55                                 !
? ===================================================== ?
! baumert_(at)_plt.de                             www.plt.de !
=========================================================





php::bar PHP Wiki   -   Listenarchive