PHP Benchmarking und Performance

Bei Java ist es ja bekannt dass man setAccessible(true) setzen sollte, wenn man mit Reflections arbeitet. Deswegen habe ich mich gefragt, ob es bei PHP genaus so ist und ob man auch hier einen Unterschied feststellen kann. Ich kam zu folgenden Ergebnis beim lesen eines public Properties in iner Klasse:


100000x: 0.061945 (accessible nicht geändert)
100000x: 0.036735 (accessible=true)


Der Unterschied fällt nicht immer so stark aus, aber ist doch immer sehr deutlich.

Und weil ich schon mal dabei war hier ein Vergleich für 10000 Durchläufe von serialize() und json_encode():


serialize: 0.05022
json_encode: 0.027367


und einmal wieder zurück:


unserialize: 0.047767
json_decode: 0.03802


Wenn man also vorhat ein Objekt oder sogar mehrere irgendwo zwischen zu speichern, sollte man überlegen ob nicht eine JSON-Codierung die bessere Wahl ist. Es werden natürlich nur die public Felder mit json_encode gelesen. Hier muss man einfach von Fall zu Fall gucken was besser passt.

preg_match und strpos sind nicht ganz so spannend:


preg_match: 0.178778
strpos: 0.127647
User annonyme 2015-10-03 21:40

write comment:
Three + = 5

Marco Bunge
Beim Einsatz von json_encode wird anders als serialize nicht das Objekt selbst gecached, sondern nur die Properties gespeichert. Wenn also ein json_decode stattfindet dann wird ein stdClass Objekt erzeugt, wohingegen bei unserialize eine Instanz des serialisierten Objektes erzeugt wird wird. Zudem greifen die magischen __sleep / __wakeup Methoden ausschließlich bei serialize/unserialze.
2016-01-29 14:47:02

Möchtest Du AdSense-Werbung erlauben und mir damit helfen die laufenden Kosten des Blogs tragen zu können?