Lua и регулярки

Тема в разделе "WASM.A&O", создана пользователем superakira, 2 июн 2018.

  1. superakira

    superakira Active Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    290
    Привет. Собственно инетерсует - занимался ли кто матчингом урлов в луа по шаблонам?
    Те например
    pattern = "(.*)mail.ru(.*)";
    url = "http://www.mail.ru";

    local res = string.match(url, pattern);

    if res ~= nil then
    print ("Found");
    end

    Это все просто для примера. Боевой код норм запилен и работает, но вот что не нарвится - это производительность string.match/gmatch. Она ужасает, что логично - Вм все таки (хотя блджад там биндинги на сишечку), но блин... Есть ли у кого опыт как это заооптимизить? Есть вариант hyperscan прикрутить - но это жуть как брутально...

    Спасибо.
     
  2. superakira

    superakira Active Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    290
    В общем решил так.

    Реализовал на плюсах на базе std::regex_match, ее забиндил в луа и оттуда юзаю заместо встроенных. Скорость выросла с ~10с до ~200мс на тестовой выборке... Караул в общем)
     
    TermoSINteZ нравится это.
  3. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    3.407
    есть boost (https://www.boost.org/users/download/). а что тебе так луа понадобилась.. заменить нельзя?
     
  4. superakira

    superakira Active Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    290
    UbIvItS, я в курсе про бустовые регулярки. и там они хороши, но мне не нужен буст в той части кода.
    луа - dsl в той части проекта и себя она зарекомендовала более чем норм. просто матчинг отстой, но я так понял это оказалось известной проблемой, после гуглинга.