Отладил скрипт, читающий очень много текста, получил реальные данные и запустил. А попутно решил прикинуть, сколько же там считать. Получилось 8 суток... Придётся распараллеливать.
Вывод: быстрее всего функция trim из String::Util, за ней по скорости идет s/^\s*//; s/\s*$//;, худший вариант - s/^\s*(.+?)\s*$/$1/;. В тестовом примере разница почти в два с половиной раза. Правда все зависит от конкретных данных, длины строк, количества пробелов, и т.п. Но на моем Celeron 2.4GHz, и данной строке скорости выше твоих в 20-40 раз. Речь идет о миллионах строк в секунду, а не одном миллионе за 20 секунд. Замена /.../ на m'...' никак не сказывается на скорости, что и вполне понятно.
Несколько дней назад я обнаружил, что Komodo по умолчанию форматирует код (в части отступов, например) не так, как я привык, а в соответствии man perlstyle
no subject
Date: 2006-04-13 01:49 pm (UTC)тут главное - чтоб скрипт считал их быстрее, чем они скапливаются =)
я, может быть, глупость скажу, но...
Date: 2006-04-13 02:42 pm (UTC)Ну...
Date: 2006-04-13 07:34 pm (UTC)Читал. Сквозь сон нифига не понял. Завтра утречком попробую...
Re: Ну...
Date: 2006-04-13 10:40 pm (UTC)Re: Ну...
Date: 2006-04-13 10:40 pm (UTC)Или
Date: 2006-04-14 03:51 am (UTC)А потом — можно и в студию...
Кстати, не ты ль переводил man perlstyle? Мне недавно лениво было оригинал читать, я русскую версию нагуглил...
Оптимизация
Date: 2006-04-14 04:30 am (UTC)1. Меняем:
s/^\s*(.+?)\s*$/$1/;
на
s/^\s*//;
s/\s*$//;
Время работы - 18 с = 0.818 от исходного
2. Меняем в нескольких местах:
/.../
на
m'...'
Время работы - 17 с = 0.77 от исходного. Хотя возможно, это ускорение объясняется погрешностью замера.
Re: Оптимизация
Date: 2006-04-14 09:59 am (UTC)Вывод: быстрее всего функция trim из String::Util, за ней по скорости идет s/^\s*//; s/\s*$//;, худший вариант - s/^\s*(.+?)\s*$/$1/;. В тестовом примере разница почти в два с половиной раза. Правда все зависит от конкретных данных, длины строк, количества пробелов, и т.п. Но на моем Celeron 2.4GHz, и данной строке скорости выше твоих в 20-40 раз. Речь идет о миллионах строк в секунду, а не одном миллионе за 20 секунд.
Замена /.../ на m'...' никак не сказывается на скорости, что и вполне понятно.
Вот ведь
Date: 2006-04-14 10:45 am (UTC)Спасибо!
Re: Оптимизация
Date: 2006-04-14 04:48 am (UTC)if ($key =~ m'^(SrcAddr|DstAddr|SrcPort|DstPort|FlowTime|Octets)$')
на
if (($key eq 'SrcAddr') || ($key eq 'DstAddr')
|| ($key eq 'SrcPort') || ($key eq 'DstPort')
|| ($key eq 'FlowTime') || ($key eq 'Octets'))
Нифига не выиграл.
Нифига
Date: 2006-04-14 05:17 am (UTC)И снова нифига не выиграл.
Re: Оптимизация
Date: 2006-04-14 10:04 am (UTC)я бы переписал на:
Впрочем 6 сравнений это немного. Хэш вряд ли даст серьезную прибавку в скорости.
Re: Или
Date: 2006-04-14 08:53 am (UTC)Я.
Кстати о
Date: 2006-04-14 10:49 am (UTC)