TGViewer
Сохранёнки программиста Сохранёнки программиста @prog_stuff · 6.54K subscribers
Post #3021 197
Почему одни движки регулярных выражений зависают, а другие нет

Обстоятельная статья Расса Кокса сравнивает алгоритм, применяемый Perl и рядом языков, с автоматом Томпсона, построенным из состояний и переходов.

В тесте 2007 года Perl сопоставлял строку из 29 букв «a» больше 60 секунд, а реализация автомата Томпсона справилась за 20 микросекунд, в миллион раз быстрее. Её код занимал менее 400 строк на C. Автор ведёт от синтаксиса выражений и конечных автоматов к преобразованию выражения в автомат и его реализации.

Граница: обратные ссылки вроде \1 выводят шаблон за пределы регулярных языков и в худшем случае требуют экспоненциального поиска. Материал стоит читать разработчикам движков и тем, кто выбирает библиотеку: для шаблонов без обратных ссылок проверяйте, использует ли она автомат Томпсона.
  • 💯 1
More from @prog_stuff
  1. Sep 20, 2026Как процессор предсказывает ветвления Псевдотранскрипт доклада объясняет тему с нуля. Конв…
  2. Sep 19, 2026Как проверять изменения без риска для всего трафика Компактный разбор о снижении риска при…
  3. Sep 19, 2026Как собрать модель пиковой нагрузки из боевой телеметрии Обстоятельный гайд о замене выгру…
  4. Sep 18, 2026Как работает фильтр Блума и когда его неточность экономит память Фильтр Блума сообщает: «э…
  5. Sep 17, 2026Как работает однопошаговый отладчик Linux на ptrace Обстоятельная статья разбирает основу…
  6. Sep 17, 2026Как конечные автоматы индексируют миллиарды строк Обстоятельный разбор Эндрю Галланта пока…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →