как регекспом убить производительность
От: Кодт Россия  
Дата: 27.07.16 09:14
Оценка: 52 (7) :)
Это, конечно, тема обще-алгоритмическая, но в первую очередь, важна именно для скриптовых языков.

Недавно стековерфлоу лёг на простенькой функции, которая чистила строчку от концевых пробелов.
Мы же понимаем, как легко это делается регекспами: s/\s+$//
Беда подкралась внезапно: строка с 20тыс пробелов в середине.
Движок регекспа запнулся и устроил квадратичный забег с откатами.

http://stackstatus.net/post/147710624694/outage-postmortem-july-20-2016

"_____x__"
 +++++X    - неудача, откат
  ++++X    - неудача, откат
   +++X    - неудача, откат
    ++X    - неудача, откат
     +X    - неудача, откат
      X    - сразу неудача, идём дальше
       +++ - удача, конец
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.