POSIX или PCREЗдравствуйте уважаемые читатели. В данной статье я провел анализ языков регулярных выражений POSIX и PCRE.Если данная статья будет иметь успех, я с радостью продолжу сравнение этих языков. "PCRE(Perl Compatible Regular Expression) - регулярное выражение языка Perl. Использует аппарат недетерминированных конечных автоматов(НКА) Работал я следующим образом. Создал на Apache сервере два файла с кодом POSIX и PCRE соответственно. До запуска регулярного выражения замерял время работы скрипта, используя функцию microtime(true)
$start=microtime(true); Конструкция чтения из файла в примере №4 может не является оптимальной, но т.к. я ее использовал как для POSIX, так и для PCRE разницы особой нету. |
1.Опыт первый. Проверим скорость работы на поиск искомого значения в строке. 1.1) POSIX
eregi("big","You are my big friend",$pockets);
preg_match("/big/","You are my big friend",$pockets); Результат: при использовании языка POSIX время работы скрипта колеблется с большим диапазоном, в то время как время работы PCRE более стабильнее. |
2.Опыт второй. Проверим скорость работы при замене искомого значения в строке. 2.1) POSIX
$str=eregi_replace("are","@","You are my big friend");
$str=preg_replace("/are/","@","You are my big friend"); Результат: в данном примере PCRE сработал быстрее нежели POSIX. |
3.Опыт третий. Замена даты формата(гггг-мм-дд) в формат(дд.мм.гггг) 3.1) POSIX
$date="2007-03-05";
$date="2007-03-05"; Результат: и в данном примере PCRE показывает себя с лучшей стороны. |
4.Опыт четвертый. Сейчас мы проверим скорость работы с большими файлами.В файл sr.txt запишем следующие предложения " Я приехал в деревню к бабушке. Меня там встретили очень хорошо. У бабушки есть мыло babka@mail.ru Бабушкин e-mail похож на мой krutoi@mail.ru .У моих друзей тоже свои адреса: dinko@lamer.ru, kon@yandex.com и другие." неопределенное количество раз(у меня около 50раз). 4.1) POSIX
$file=file("sr.txt");
$file=file("sr.txt"); Результат: При работе с большими файлами PCRE отбирает очко у POSIX и вырывается вперед. |
Вывод: При работе с большими ресурсами используйте язык PCRE, а в остальных случаях на ваш выбор, но по-моему факты в пользу PCRE на лицо.
|