IsachenkoV / nsudotnet

0 stars 0 forks source link

[LinesCounter] Регексы #6

Closed pavel-b-novikov closed 9 years ago

pavel-b-novikov commented 9 years ago

Ага. Насколько вообще вы считаете оправданным использование регексов для этой задачи?

IsachenkoV commented 9 years ago

Плюс - это удобно, руками не нужно удалять все комментарии.

Для поиска совпадений используется недетерминированный конечный автомат, который ищет самое большое совпадение в строке и откатывается назад, если произошла ошибка. Весь этот процесс может занимать достаточно много времени, если к регексу с определенным шаблоном подобрать "плохую" строку. Я думаю, что для данной задачи удаление однострочного комментария регексом будет работать дольше, чем если бы мы наткнулись вручную на "//" и оставшуюся строку бы не рассматривали, а вот для блочных комментариев все равно бы пришлось пробегать всю строку. Т.е. минус - может работать дольше, чем за О(колич-ва символов)

pavel-b-novikov commented 9 years ago

Собсно в этом-то и суть, что данную задачу предполагалось решать простеньким сапомисным конечным автоматом. Регексы - это прекрасно, но увы, далеко не быстро.