Есть ли в Common Lisp самая быстрая реализация PCRE? - PullRequest
7 голосов
/ 21 февраля 2011

Друг утверждал, что Common Lisp имеет самую быструю Perl-совместимую библиотеку регулярных выражений из всех языков, включая сам Perl , потому что с помощью оптимизирующего JIT-компилятора, такого как SBCL, CL-PPCRE может компилировать каждое конкретное регулярное выражение вниз в нативную сборку, тогда как другие реализации, включая Perl, должны генерировать байт-код и интерпретировать его. На практике, особенно для общего случая, когда мы пытаемся сопоставить одно и то же регулярное выражение со многими входами или длинными входами, издержки компиляции более чем оправданы.

К сожалению, я не могу найти никаких эталонов по этому, и я не знаю достаточно, чтобы управлять своими собственными, поэтому я перехожу к улей. Кто-нибудь может оценить это утверждение?

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

У меня нет своих собственных тестов, но, возможно, ваш друг имел в виду результаты, касающиеся переносимой библиотеки регулярных выражений CL-PPCRE .Текущая веб-страница больше не говорит о тестах, но благодаря Wayback Machine мы видим, что она использовалась для отображения результатов тестов, когда CL-PPCRE превосходил Perl 2-к-1.Сравнительный анализ - сложная задача (особенно для движущихся целей), которая может объяснить, почему на текущей странице ничего не говорится.

1 голос
/ 24 декабря 2011

В библиотеке PCRE теперь есть модуль JIT-компилятора, и она имеет хорошую производительность по сравнению с другими регулярными выражениями: http://sljit.sourceforge.net/regex_perf.html или http://blog.rburchell.com/2011/12/why-i-avoid-qregexp-in-qt-4-and-so.html

...