неоднократно встречал явно не декларируемое, но странно прилипчивое мнение, что если в программе нужны регулярные выражения, то лучше всего взять какую-то крутую библиотеку. потому что в glibc хоть тоже регулярки есть, но сделаны как-то «на отъебись», и вообще фу-фу-фу. сам почему-то так считал.
решил тут развлечься синтетическим тестом. вот этим. и таки я вам имею сказать, что реализация glibc порвала всех просто в куски. примерно вот в таком виде:
strstr: 943 ms spent glibc: 175 ms spent regexp9: 2731 ms spent tre: 3050 ms spent microregexp: не дождался dietlibc: 7602 ms spent pcre: 5608 ms spent
такие вот дела, зайчики. попробовал ещё на любимом крайнем случае — microregexp и dietlibc обосрались, остальные ок.
собственно, по ссылке результаты похожие. откуда вывод: стандартное — не всегда хуёвое. иногда стоит не выёбываться, а просто пользоваться тем, что есть в glibc.
тест, конечно, совсем синтетический, но далеко не совсем бессмысленный. если оптимизатор glibc распознал этот случай и скрафтил для него спецалгоритм (лень смотреть в исходники) — молодцы, честь и хвала. а если он не распознал, а всё равно что-то скрафтил — тем более.