crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в производительность regex
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
alexy Дата 24.7.2015, 17:00
  пишу тут абстрактный веб сервер, первой сделал реализацию на libh2o (пишут, что быстрее чем nginx). но там не поддерживаются регулярные выражения, так что можно обработчик запроса поставить только по началу пути. решил замутить свое, но оно жутко тормозило, начал выяснять, уперся в std::regex

$g++-5 --version
g++-5 (Debian 5.1.1-14) 5.1.1 20150711

$g++ --version
g++ (Debian 4.9.3-2) 4.9.3

$clang++ --version
Debian clang version 3.7.0-svn239806-1+b1 (trunk) (based on LLVM 3.7.0)


вышло
g++-5 - 165 milliseconds (boost 13)
clang++ 149 milliseconds (boost 13)
а вот g++ 1663 (boost 12 один раз, другие 13)

интересно, сколько нужно времени gcc и clang'у чтобы догнать буст? :)

собственно код
int main(int,char**)
{
    std::string text = "/some/path/dkfjasg;kfhd/04857q2==kjkgjhoi34k[h/sock";
    boost::regex parser("/some/path/([^/]+)/([^/]+)/sock");

    chronometr chron; // в деструкторе печает сколько прошло от конструирования объекта
    for(std::size_t i=0;i<10000;++i)
    {
        boost::smatch mt;
        boost::regex_match(text,mt,parser);
    }

    return 0;
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 11:58