[PHP] Traits deutlich langsamer als Extends?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von theQuest, 2. Februar 2012 .

Schlagworte:
  1. 2. Februar 2012
    Traits deutlich langsamer als Extends?

    Hallo,

    ich musste heute eine Klassensammlung umstellen und wollte dabei gleich weg von extends, über die ich den abtract Singleton geregelt hatte. Traits schienen mir dafür besser geeignet, da ich mich im OOP-Bereich bewege und von außen keiner den Singleton braucht.

    Nun ist mir aufgefallen, dass die Traits deutlich langsamer sind als die extends. Ich selber habe noch keinen Benchmark gefunden, der das bestätigt. Habe es auf PHP 5.4 RC 4 unter Win und Linux getestet. Wollte mal nun die Frage an euch weiterleiten und hören, ob ihr mehr wisst.
     
  2. 2. Februar 2012
    AW: Traits deutlich langsamer als Extends?

    das "problem" an traits ist, dass die darin definierten methoden und eigenschaften nicht vererbt, sondern kopiert werden.

    d.h. wenn du einen trait mit 2 methoden an 10 klassen übergibst, hast du quasi 20 + 2 methoden erzeugt.
    bei einer vererbung durch "extends" ist das nicht der fall.

    dieses verhalten soll aber in den kommenden versionen optimiert werden.
    -> kann sein dass es schon im RC 6 implementiert ist, wenn nicht dann im nächsten (heute )

    quelle: php internals

    mach doch mal einen echten benchmark.
    würde mich schonmal interessieren
     
  3. 3. Februar 2012
    AW: Traits deutlich langsamer als Extends?

    Optimiert heißt, es bleibt beim kopieren? Kopieren wird ja immer langsamer bleiben, denke ich.

    Benchmark:
    100000 eine Klasse mit Singleton gestartet.

    Zeit Trait:
    0.080440998077393
    Zeit Extends:
    0.095173120498657

    Extends ist doch langsamer: ~118%
     
  4. 3. Februar 2012
    AW: Traits deutlich langsamer als Extends?

    ja gut der benchmark sagt nicht wirklich was aus. interessant wäre die compile-time, sprich: wie lange dauert der startup des scripts.

    das kannst du damit ermitteln:
    ab - Apache HTTP server benchmarking tool - Apache HTTP Server
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.