Mailinglisten-Archive |
Norbert Pfeiffer schrieb am Sonntag, den 15. August 1999: > >> Und wenn man den noch ein kleines bissel abwandelt: > >> eregi("(.*) <a href=\"(.*)\" target=\"(.*)\">(.*)</a><br>",$zeile,$regs); > >> bekommt man auch noch das Target extra aufgelistet... [...] > umstaendlicher Code kann also schneller sein, als etwas elegantes > (???). > Das will mir nicht so recht in den Kopf... Klaro, Eleganz hat ja nichts direkt mit Geschwindigkeit zu tun (sie Dir mal Frauen an, die auf Stöckelschuhen elegant gehen ... :-). Aber im Ernst: Letztendlich müßte man sich halt genau ansehen, was intern passiert und wo der geringste Aufwand getrieben wird ... Der Grund dafür, daß der reguläre Ausdruck "(.*) <a href=\"(.*)\" target=\"(.*)\">(.*)</a><br>" nur relativ langsam abgearbeitet werden kann, dürfte darin liegen, daß so oft .* vorkommt. Das paßt dann jedesmal auf alles bis zum Ende vom String; erst dann merkt PHP, daß der Rest vom Muster nicht mehr paßt und muß wieder einen Schritt zurück und nach der passenden Stelle suchen, wo es mit dem Rest vom Muster weitermachen kann. Folgendes (ungetestet) müßte etwas schneller sein: '([^ ]*) <a href="([^"]*)" target="([^"]*)">([^<]*)</a><br>' Vermutlich aber immer noch langsamer als Deine Lösung. Ich würde bei der Softwareentwirklung aber dennoch der eleganten Lösung zuerst immer den Vorrang geben, weil die Verständlichkeit und Wartbarkeit des Codes ganz wichtige Punkte sind. Wenn nötig, kann man an der Geschwindigkeit immer noch basteln ... Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive