phpbar.de logo

Mailinglisten-Archive

[php] Optimieren: kann man schlichtes Schleifen verbessern?

[php] Optimieren: kann man schlichtes Schleifen verbessern?

Till Gerken till_(at)_phpwebdev.com
Wed, 15 Mar 2000 23:24:34 +0100


> für mein Datenbankhandling verwende ich eine zentrale Klasse, in der ich
für
> jede Tabelle mit field_name und field_type durch alle Felder schleife (via
> assoziatives Array), mit den globalen Werten der Formularfelder vergleiche
> und bei einer Änderung die entsprechende Aktion (bes. update, insert)
> ausführe.
>
> Schön portabel, nur: wenn man einige Tabellen miteinander joint, wird das
> bei der Menge der Variablen schnell unübersichtlich, und irgendwie habe
ich
> das Gefühl, daß man das eleganter machen kann.

Problem bei solchen Sachen ist immer: bringt einem die Optimierung was?
Eleganz ist immer schön, und man sollte sie nur dann aufgeben, wenn es
erforderlich ist.

Zuerst einmal ist die Ausführung von PHP(4) auf einem Webserver sicherlich
wesentlich schneller als ein Datenbankzugriff, deswegen gilt es
festzustellen, ob der PHP-Code tatsächlich so lahm ist, daß er zum
Flaschenhals wird.

Muß man dann wirklich etwas im Code optimieren, so gilt: möglichst viel
Kalkulation aus der Schleife herausverlagern in den Setupteil. Kein unnützes
Kopieren von Variableninhalten oder komplizierte Variablenzugriffe (manchmal
muß man sich entscheiden, ob komplizierte Zugriffe schneller sind als das
Kopieren oder umgekehrt).

Merke: PHP4 arbeitet mit Referenzen und kopiert nicht jedesmal einen Wert,
wenn man ihn auf eine andere Variable zuweist! Dies ist jedoch bei einer
Typänderung der Variablen nicht mehr der Fall, deswegen muß man hier genau
aufpassen, was passiert.

Generell sollte man seinen Code also vorher profilieren und herausfinden, wo
die Schwachstellen liegen. Danach diese dann konsequent eliminieren. Ein
Pauschalrezept gibt es meistens nicht, bis auf: tue nichts Unnützes, und
wenn man was tut, tu es nie öfter als nötig.

Dies ist jetzt natürlich eine reine programmbezogene Optimierung, es läßt
sich auch noch einiges mit SQL-Optimierung herausholen, aber das ist dann
ein anderes Thema.

Till




php::bar PHP Wiki   -   Listenarchive