#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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% + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren