Производительность и практика ленивых регулярных выражений? - PullRequest
3 голосов
/ 30 июня 2010

Я читаю в интернете Мне следует избегать ленивых регулярных выражений из-за «худшей» производительности и «плохой» практики.Я никогда не видел пример ни того, ни другого.Я не слышал о приложении, которое связано с процессором своим регулярным выражением.Другие говорят, что «научились» избегать этого, но никогда не упоминают, почему, хотя один намекнул, что это из-за обычных побочных эффектов при включении или выключении флагов в старых программах.

Есть ли причины избегать ленивых регулярных выражений?Если да, то что они?

Ответы [ 3 ]

4 голосов
/ 30 июня 2010

Одна вещь, которую вы должны попытаться обеспечить с помощью любого регулярного выражения, - это то, что у него есть только один способ сопоставления с данным соответствием.Это звучит странно, но есть отличная статья, которая демонстрирует эту точку зрения ... http://www.regular -expressions.info / catastrophic.html

Редко можно встретить такую ​​степенькатастрофический откат, как показано в этой статье.Но на всякий случай неплохо запускать простой тест всякий раз, когда пишете регулярное выражение, которое будет интенсивно использоваться.

0 голосов
/ 30 июня 2010

Ваше регулярное выражение должно соответствовать вашей проблеме.Я видел случаи, когда ленивое регулярное выражение работало значительно хуже, чем жадное регулярное выражение, а также наоборот.Не существует универсально «лучшего» способа сделать это.Наиболее важным является то, что регулярное выражение возвращает ожидаемые результаты.После этого вы можете настроить скорость и профилировать различные версии, чтобы получить точное сравнение скорости.

0 голосов
/ 30 июня 2010

Это зависит от вашей целевой аудитории.

Если вы не заботитесь об оптимизации, не имеете большого трафика и так далее, это, вероятно, не будет иметь значения, и много другой оптимизацииметоды, которые дают вам дополнительные 1/4 секунды, тоже не будут.

Ленивое регулярное выражение может занять гораздо больше времени в плане производительности, но вы можете не заметить, что повышение производительности, если вы не имеете дело с тысячамистрок, которые его поиск или повторяется на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...