Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Господа, как это объяснить? Просто мистика! исполнение альтернативных шаблонов 
:(
    Опции темы
Suppir
Дата 30.8.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Имеется текстовый файл 150 Мб


два регулярных выражения:

1)  if (/d\s+-\d|\d-\s+\d/){print OUT}

2) if(/\d\s+-\d/ || /\d-\s+\d/){print OUT}

первое обрабатывает весь файл за 37, 67 секунды
второе выражение обрабатывает за 3,42 секунды (в 10 раз быстрее!)

У меня уже голова кипит, не пойму в чем дело.

Два других выражения:

/(?:тыс|млн|млрд)\.р/  
/тыс\.р/ || /млн\.р/ || /млрд\.р/  

работают с аналогичной скоростью (2,4 сек)

Просто мистика какая-то.

Добавлено @ 19:55
Ааа, кажется, я понял. Все дело в том, что конструкция /d\s+-\d|\d-\s+\d/ вызывает большое количество возратов.
Необходимо оптимизировать это выражение до /\d(?:\s+-|-\s+)\d/. Теперь скорость обработки 5,99 сек.
Но это все равно гораздо медленней, чем два выражения /\d\s+-\d/ || /\d-\s+\d/)

Это сообщение отредактировал(а) Suppir - 30.8.2009, 19:56
PM MAIL   Вверх
Suppir
Дата 30.8.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Еще прикол:

/\d{4}г|N\d|\d"\d/   - 56,27 сек
/N\d|\d(?:\d{3}г|"\d)/  - 44,36 сек
/\d{4}г/ || /N\d/ || /\d"\d/  -  3,88 сек

результат полностью аналогичный. Оптимизация в 15 раз!
ActivePerl 5.10, Windows XP, SP 3
PM MAIL   Вверх
Suppir
Дата 30.8.2009, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



1

Это сообщение отредактировал(а) Suppir - 31.8.2009, 10:43
PM MAIL   Вверх
Suppir
Дата 31.8.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Есть какие-нибудь предположения? smile
PM MAIL   Вверх
arto
Дата 31.8.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



PM MAIL ICQ   Вверх
Suppir
Дата 1.9.2009, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Спасибо, arto. Книжка, можно сказать, у меня настольная smile
Собственно, благодаря ей и знаю, как оптимизировать 
/d\s+-\d|\d-\s+\d/ - 37, 67 сек.
до
/\d(?:\s+-|-\s+)\d/    - 5,99 сек.
.
Но в это книжке ничего про пакеты (if /.../ && /.../ && !/.../) регулярных выражений не написано.

Это сообщение отредактировал(а) Suppir - 1.9.2009, 07:22
PM MAIL   Вверх
arto
Дата 1.9.2009, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perldoc re на предмет debug, и посмотреть разницу между выражениями.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0819 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.