|
Die letzten 5 Postings in diesem Thema » Alle anzeigen
von chip |
Dann sind wir uns ja einig ;) |
von raiserle |
Da gebe ich Dir Recht.
Ich habe auch nicht gesagt, dass preg_match schneller ist als strpos, bzw wollte das nicht so formulieren (sry).
Aber in diesem Fall, war mein Gedanke schon bei, "Was ist, wenn 6 mal strpos aufgerufen werden muss, weil nie ein Zeichen drin vor kommt".
Das würde ja bedeuten, dass der komplette String von forn bis hinten 6 mal durchlaufen wird und dies war in meinen Gedanken eher langsamer, als ein regex anzusetzen.
Der Test hats ja auch gezeigt, was aber auch nur beim ersten Aufruf von strpos stimmt, wenn man gleich danach nochmal versucht, sind die Zeiten deutlich schneller als preg_match.
Ähm und noch was zu dem Pattern, das + kann dort auch weg, er soll ja bei einem von den 6 Zeichen eh abbrechen.
Gruß Henrik |
von chip |
OK, im ungünstigsten Fall ist strpos() wirklich langsamer. Aber, in den meisten Fällen (also nicht bei "synthetischen" Tests) ist strpos() durchaus schneller als preg_match(). |
von raiserle |
@ chip:
Test 3 mal gemacht.
Beim ersten Aufruf der Seite, ist strpos def langsamer... 2-4 ms
wobei preg_match immer um die 0.7 - 1.2 ms liegt ...
(Testumgebung Text mit 415 Zeichen das $-Zeichen steht an der 103 Stelle.)
(das $-Zeichen ist bei mir im letzten Oder-block bei strpos-Prüfung)
Und warum auch denk bitte an die 6 mal, es seid denn es wird gleich im ersten Oder-block das Zeichen gefunden . Also musste er in meinem Beispiel erst
mit 5 Zeichen von Anfang bis Ende durchgehen, bis dann das $ geprüft wurde.
Beim 2ten mal des Aufrufs ist dann aber wirklich strpos schneller (Annahme, liegt im Speicher)
Gruß Henrik |
von chip |
Ja, du musst die Funktion sechs Mal aufrufen für sechs Zeichen. Aber da kann man sich auch schöne Funktionen basteln, die mehrere Zeichen suchen.
Kleiner Tipp: Mit array_map() oder array_walk() sollte es gehen, wobei du als Array einfach deine Zeichen verwendest. |
|
|
|