The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus, 21-Май-13 07:25 
ну-ну. смотрим:

http://snowplow.org/martin/rebench/

~/bench$ perl rebench.pl
Text type:                   two regexps    plain alternate       la alternate   prefix alternate     FOO+ alternate     F+OO alternate  plain FOO BAR BAZ
plain unmatching             15.52 usecs        19.29 usecs        19.29 usecs        19.28 usecs         26.1 usecs        19.29 usecs        8.636 usecs
early FOO BAR                15.47 usecs         19.6 usecs        19.58 usecs        19.58 usecs        26.47 usecs        40.13 usecs        8.614 usecs
early FOO BAR BAZ            2.792 usecs        7.581 usecs        7.533 usecs        7.528 usecs        9.625 usecs        11.92 usecs        2.775 usecs
early FOO MORK MINK          10.89 usecs        7.533 usecs        7.556 usecs        7.519 usecs        9.636 usecs         11.9 usecs        8.621 usecs
end FOO BAR                  15.47 usecs        19.58 usecs        19.56 usecs        19.56 usecs        26.49 usecs        33.84 usecs        8.635 usecs
end FOO BAR BAZ              8.702 usecs        20.81 usecs        20.79 usecs        20.85 usecs        27.66 usecs        35.07 usecs        8.646 usecs
end FOO MORK MINK            15.46 usecs        20.79 usecs        20.81 usecs        20.77 usecs        27.65 usecs        35.07 usecs        8.611 usecs

~/bench$ python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching             22.65 usecs          113 usecs        42.55 usecs         21.3 usecs        307.2 usecs        378.4 usecs        21.28 usecs
early FOO BAR                21.45 usecs        113.3 usecs        51.53 usecs        21.42 usecs        304.8 usecs        375.4 usecs        21.31 usecs
early FOO BAR BAZ            6.704 usecs        34.21 usecs        6.555 usecs        6.678 usecs        91.95 usecs          114 usecs        6.545 usecs
early FOO MORK MINK          6.703 usecs        34.21 usecs        27.84 usecs        6.697 usecs        91.84 usecs        113.7 usecs        21.29 usecs
end FOO BAR                  21.44 usecs        114.5 usecs        42.55 usecs        21.42 usecs        305.2 usecs          376 usecs         21.3 usecs
end FOO BAR BAZ              21.46 usecs        112.9 usecs        21.27 usecs        21.41 usecs        306.5 usecs        374.7 usecs        21.26 usecs
end FOO MORK MINK            21.47 usecs        112.8 usecs        42.53 usecs        21.47 usecs        305.4 usecs        374.9 usecs        21.28 usecs

а теперь меняем всего одну строчку в коде(вместо import re пишем import regex as re):


~/bench$ python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching              14.5 usecs        14.45 usecs        18.41 usecs        14.43 usecs        14.46 usecs        14.42 usecs        10.31 usecs
early FOO BAR                14.57 usecs        14.57 usecs        18.35 usecs        14.63 usecs        19.08 usecs        14.84 usecs        10.27 usecs
early FOO BAR BAZ            6.233 usecs        6.171 usecs        3.374 usecs        5.298 usecs        9.726 usecs        5.563 usecs         3.35 usecs
early FOO MORK MINK          5.777 usecs        5.693 usecs        12.94 usecs        5.351 usecs        10.65 usecs        5.187 usecs        10.27 usecs
end FOO BAR                   14.6 usecs        14.55 usecs        18.37 usecs        14.61 usecs        28.89 usecs        14.83 usecs        10.25 usecs
end FOO BAR BAZ              18.51 usecs        19.78 usecs        10.35 usecs        17.24 usecs        32.33 usecs         16.8 usecs        10.31 usecs
end FOO MORK MINK            17.76 usecs        17.21 usecs        18.36 usecs        17.06 usecs        33.07 usecs        15.25 usecs        10.26 usecs

а теперь import re2 as re:


~/bench$ python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching              1.32 usecs         1.28 usecs        2.633 usecs        1.282 usecs        1.295 usecs        378.8 usecs        1.291 usecs
early FOO BAR                1.359 usecs        1.633 usecs        2.814 usecs        1.402 usecs        1.389 usecs        377.1 usecs        1.394 usecs
early FOO BAR BAZ            1.185 usecs        1.196 usecs        2.613 usecs        1.194 usecs        1.252 usecs        114.2 usecs        1.135 usecs
early FOO MORK MINK          1.221 usecs        1.211 usecs        2.611 usecs        1.237 usecs        1.264 usecs        114.2 usecs        1.388 usecs
end FOO BAR                   1.35 usecs        1.358 usecs        2.757 usecs        1.362 usecs        1.377 usecs        377.4 usecs        1.366 usecs
end FOO BAR BAZ              1.733 usecs        1.719 usecs        3.054 usecs        1.774 usecs        1.742 usecs        382.6 usecs         1.66 usecs
end FOO MORK MINK             1.81 usecs        1.782 usecs        3.076 usecs        1.808 usecs        1.799 usecs        380.8 usecs        1.345 usecs

внезапно, ускорение в ~ 22 раза относительно первоначального варианта и в 10-15 раз быстрее libpcre и цена такого ускорения - поправить строчку импорта.

в более умном варианте это всё надо обернуть в try/except, сделав fallback на более медленную версию(как, кстати, такое сделать в perl?).

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру