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