Andreas Dölling: Performance-Verlust durch OOP?

Beitrag lesen

Hallo,

ich habe ein kleines Prototyp-Script, das mit einzelnen Funktionen im globalen Namensraum arbeitet, nachträglich in eine Klasse gekapselt.
Die Funktionalität an sich blieb dabei unverändert, außer daß natürlich z.B. aus globalen Variablen Objekteigenschaften wurden.

Das Ganze funktioniert auch - allerdings mit einer Performance-Einbuße, die sich gewaschen hat.
Während das prozedurale Prototyp-Script für eine Beispielaufgabe 1,4 Sekunden benötigt, braucht die entsprechende Methode der Klasse satte 36 Sekunden!

Ich kann mir das absolut nicht erklären.

Zur Info:
Es handelt sich um ein Script, das mit domxml_open_file() eine HTML-Datei einliest und sich aus dem DOM-Baum das Element mit der ID "content" holt.
Dieses Element und seine Kinder werden nun rekursiv durchlaufen. Textknoten in bestimmten Elementen (P, TD, DIV, SPAN) werden nach Glossarbegriffen durchsucht. Gefundene Begriffe werden durch entsprechende DFN-Elemente ersetzt.
Der Performance-Verlust tritt in der rekursiven Funktion auf, also der Kernfunktion.

Die Aufgabenstellung entspricht weitgehend der aus dem JS-Strang http://forum.de.selfhtml.org/archiv/2005/2/t100676/#m617171.
Damals wurde mir geraten, das Ganze serverseitig mit PHP und dessen XML-Extension zu lösen, um die Javascript-Performance-Probleme zu umgehen.

Tja, jetzt stehe ich wieder vor dem alten Problem.

Ich könnte nun natürlich einfach die prozedurale Lösung, also den Prototypen, verwenden, der ja befriedigend schnell läuft.
Aber ich möchte das Ganze gerne kapseln. Und vor allem möchte ich wissen, WARUM das Script in der OOP-Version plötzlich so elend langsam ist.

Wäre für Hinweise sehr dankbar.

Der Code ist recht umfangreich. Kann ihn aber bei Interesse gerne posten.

Thanx,
Andreas