Вообще да, может работать очень долго.
Но наш сервис очень активно развивается, появляются новые системы и меняются
существующие, а старые магазины мы, конечно, тоже модифицируем.
От кода первых магазинов уже практически ничего не осталось, и это хорошо!
-Original Message-
From:
Добрый день,
Базовым выражением, которое пытается сматчится, здесь будет
qr/(?:[^a-z]\s*?)+?r/. Оно не-матчится с экспоненциальной сложностью
относительно длины строки для движка pcre. И причина - не в
backreferenc'ах (их тут нет), а в backtracking'e. Поэтому, на "голом"
движке, несовпадение
\s* != \s+ - так что это очень сильно меняет суть шаблона. В данном контексте пробела может и не быть... Так что это не решает проблему 28.10.2016, 21:44, "Динар Жамалиев via Moscow-pm" :Если везде заменить \s* на \s+, что не меняет сути шаблона, результат будет мгновенным, так
+?, *? работают одинаково, ? отключает жадность (отступать назад им
бессмысленно), а вот ++, *+ - да, не откатываются назад при неудаче.
On 10/28/2016 09:44 PM, Динар Жамалиев via Moscow-pm wrote:
Если везде заменить \s* на \s+, что не меняет сути шаблона, результат
будет мгновенным, так как
Если везде заменить \s* на \s+, что не меняет сути шаблона, результат будет
мгновенным, так как квантификатор +? не отступает назад, захват либо есть
максимально возможный, либо нет. В то время как *? сначала захватывает все,
затем отступает Каждый дополнительный * значительно увеличивает число
>Мы начинали делать магазины на Perl еще в 2001 году
Вот за что люблю перл: один раз написал и работает годами.
28.10.2016, 14:14, "Александр Фролов via Moscow-pm" :
> Всем привет!
>
> Будет ли интересна тема доклада не про сам Perl, а про кейс его применения на
> нашем
Тут скорее дело в Захвате и построение обратных ссылок для них, на 16+ явно
замедляется
Вот переменная без захватом отработает быстро
my $regexp16 = qr('
(?:3\s*?(?:[^a-z]\s*?)+?r)
|(?:3\s*?(?:[^a-z]\s*?)+?r)
|(?:3\s*?(?:[^a-z]\s*?)+?r)
|(?:3\s*?(?:[^a-z]\s*?)+?r)
|(?:3\s*?(?:[^a-z]\s*?)+?r)
Видимо, какое то ограничение на количество обратных ссылок, вот так работает
быстро:
my $regexp16 = qr('
(3\s*?(?:[^a-z]\s*?)+?r
|3\s*?(?:[^a-z]\s*?)+?r
|3\s*?(?:[^a-z]\s*?)+?r
|3\s*?(?:[^a-z]\s*?)+?r
|3\s*?(?:[^a-z]\s*?)+?r
|3\s*?(?:[^a-z]\s*?)+?r
|3\s*?(?:[^a-z]\s*?)+?r
Да, видимо. Я просто нечасто забредаю в те дебри, а от этих акронимов и
т.п. уже скучно становится. по паре новых лучших технологий в год.
JavaScript...
28 октября 2016 г., 9:46 пользователь Толян II via Moscow-pm <
moscow-pm@pm.org> написал:
> Может таки eslint?
>
> Поскольку gulp-cslint ---
для точности, речь идёт об одной регулярке, с менее чем 16 вариантами OR,
или от 16 и более. Скорее всего зашито в движок PCRE.
вы скорее всего натолкнулись на один из внутренних лимитов.
решение простое - дробить на регулярки с максимум 15 вариантами OR.
P.S.: почему так - не знаю, но уверен,
Столкнулся с проблемой. В проекте есть список похожих регулярок (спам фильтр на домены, если точнее). Все регулярки сливаются в одну и потом идет матчинг.Появилась проблема, что скрипт начал подвисать. По результату, накидал небольшой тест: Если регулярок 15 шт, то даже при увеличении строки до
Конечено будет интересно!
пт, 28 окт. 2016 г. в 14:13, Александр Фролов via Moscow-pm <
moscow-pm@pm.org>:
> Всем привет!
>
> Будет ли интересна тема доклада не про сам Perl, а про кейс его применения
> на нашем SAAS-сервисе интернет-магазинов?
> Мы начинали делать магазины на Perl еще в 2001
Всем привет!
Будет ли интересна тема доклада не про сам Perl, а про кейс его применения на
нашем SAAS-сервисе интернет-магазинов?
Мы начинали делать магазины на Perl еще в 2001 году, и до сих пор все
компоненты нашего сервиса написаны на этом языке.
Предполагаемые тезисы:
- Почему Perl, а не
Может таки eslint?
Поскольку gulp-cslint --- это плагин для проверки coffescript к gulp
а cslint --- DeadLock detector for CSharp programs
В любом случае спасибо за наводку, я думал в JS все плохо.
Еще нашел JShint, тоже ловит нужные мне ошибки.
И http://www.javascriptlint.com --- но похоже на
14 matches
Mail list logo