Mailinglisten-Archive |
Thorsten Koch wrote: > Hi Leute, > >>> (6ms vs 13ms bei 10000x[] vs 10000x array_push auf meinem Athlon >>> 64 3700+, 2GB DDR2 Win2k php 5.2). > > Ein Unterschied von 7ms. Selbst bei 100k Datensätzen sinds 70ms, > naja. Ich denke wenn man Performance-Probleme hat, dann hat man die > sicherlich woanders und hat wirkungsvollere Stellschrauben. Missachte sowas nicht so leichtfüssig. Sowas summiert sich schnell genug. Und warum die langsame Variante nehmen? > > > Wie geht Ihr eigentlich damit um? > > 1. Wie findet Ihr die Bottle-Necks raus? 2. Wie optimiert Ihr Euer > System? Wenn man es richtig professionell machen will, gibt es für php xdebug. Damit kann man Ausführungszeiten genauestens analysieren. Ich habe es nie selbst verwendet, da meine Projekte dem Aufwand nicht gerechtfertigten, aber das, was ich davon auf der letzten php Usergroup in Bochum gesehen habe fand ich recht eindrucksvoll. Momentan nehme ich daher php's microtime() funktion zu Hand. Dabei mache ich immer mal wieder, wenn ich mir überlege, wie ich ein Problem löse ein kleines Benchmark zu gewissen code schnipseln... Da kommen immer wieder interessante Sachen raus: meineFunktion(); meineKlasse::meineFunktion(); $meinObjekt->meineFunktion(); wird von oben nach unten immer langsamer. Und zwar auf 10k Durchläufen auch wieder sowas wie 10ms / 15ms / 20ms. Also nurmal grob, dass ich das gemacht habe ist schon was länger her... Oder sowas: $konsts =Array('meineKonstante' => 'bla'); $muell =$konsts['meineKonstante']; vs. define('meineKonstante','bla'); $muell =meineKonstante; vs. class meineKlasse { const meineKonstante ='bla'; } $muell =meineKlasse::meineKonstante; (das $muell = -statement jewals 10000x) Und Ergebnis? Will wer raten? ;-). Nun... Auch wieder in der Reihenfolge, wie ich es geschrieben habe von schnell nach langsam. Wer hätte gedacht, dass ein assoziativer Array Konstanten in die Tasche steckt? Nun gut. Wir könnten es hier mit anderen php-Optimierungen zu tun haben, wie Referenzen, die erst kopiert werden, wenn die Daten verändert werden oder sowas. Dafür weiss ich leider nicht genug über die php-Engine :-(. Aber es ist schonmal gut zu wissen, dass beiu der Frage Konstanten vs. assoziative Arrays Performane eher eine Argument für die Arrays sind. Ich hätte das Gegenteil erwartet... Es macht jedenfalls viel Spass und man entdeckt immer wieder neues und auch manchmal unerwartetes solche Tests zu machen. Yannik
php::bar PHP Wiki - Listenarchive