Что быстрее? strpos() vs stripos() vs preg_match()

По-моему это любимый вопрос начинающего разработчика "что быстрее". В простейшем случае, ответ однозначен. strpos() быстрее stripos(), а тот в свою очередь быстрее preg_match().

А если требуется проверить длинную строку, на наличие одного из нескольких слов? Т.е. фактически будет выполняться многократный strpos()|stripos() в цикле и однократный preg_match() ? Данный эксперимент я поставил на нескольких разных серверах. Несколько тысяч файлов проверялись, на наличие нескольких слов из словаря. В словаре 13 слов. Причем регистр, был несущественным, поэтому по сути тестировалось strpos()+strtolower() vs stripos() vs preg_match()

Привожу результаты. Первый результат с моего домашнего компа. Второй с хостинга на Инфобоксе. Третий с сервера клиента. Тестировал по много раз, но дабы не загромождать, привожу типичные результаты.

preg_match() выиграл только на моей домашней машине. В остальных случаях strpos()+strtolower() всегда оказывался минимум в 2 раза быстрее. stripos() в серединке.

You may also like...