Имеет ли Common Lisp самую быструю реализацию PCRE?

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

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


person Wang    schedule 21.02.2011    source источник
comment
SBCL не имеет JIT-компилятора. SBCL всегда компилирует все прямо в машинный код. Отличительной особенностью SBCL является то, что его компилятор всегда доступен — даже из пользовательского кода через функции EVAL, COMPILE и COMPILE-FILE.   -  person Rainer Joswig    schedule 21.02.2011


Ответы (2)


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

person WReach    schedule 15.03.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

person dark100    schedule 24.12.2011