Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Шутаут регулярок

Регулярки вещь полезная, так что понимание, как правильно грепать, не повредит.

Обнаружил, что на шутауте есть годный бенч: regex-redux.julia

Годный, потому что

a) кристально чистый код
б) довольно быстрый - в разы быстрее других "чистых" программ
в) сам бенч - более-менее реалистичный сценарий регулярок
г) он ещё и multicore friendly

Там товарищи упражняются в-основном в биндингах к сишным либам, которые почему-то отсутствуют
в готовом виде. Ну и там разные языки практикуют разные подходы - то есть нет унификации.
Скажем, разные опции в PCRE2 передают.

"Нам" "надо" задокументировать разные подходы и сделать матрицу:

- подходы к регуляркам А Б В
- подходы к параллелизации a б в г
- подходы к коллекциям 1 2 3
- трюки X Y Z

Ну и сделать по возможности все комбинации во всех языках.

Сами шутаутовцы пидарасы - то есть если какие-то варианты заацептят - это хорошо,
не заацептят - похуй.

Мы можем сделать бенчи для своих нагрузок "потом".

Основная идея - починить регулярки. Ну то есть зарелизить недостающие либы -
биндинги, параллельные стратегии и т. д.

Кроме того есть альтернативные подходы к этой задаче, которые шутаутовцы либо не
рассматривали либо зарубили:

- Boost::Spirit и вариации
- Yacc и вариации - в т.ч. наш любимый Ragel
- "псевдорегулярки" - ну то есть имплементация подмножества регулярок, нужного для задачи.

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

Например, отделив "универсальный" код который в принципе можно релизить в виде либы
от кода, специфического для бенча.
Tags: programming, все пидарасы а я
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments