[Moscow.pm] POE::Filter::Line

Ruslan Zakirov ruz ÎÁ bestpractical.com
ðÔ íÁÒ 28 17:33:25 PDT 2008


�абро�ал бенчмарк, но только про�тенький и по�ледн�� вер�и� в �лайдах
была �овершенно другой. �адею�ь подправите и вернете назад чтобы � мог
варианты ss1 и ss2 приве�ти к единому варианту ответа, пока они
отличают��.

amd64, gentoo, system malloc.

       Rate   re  ss2  ss1
re   6381/s   -- -51% -81%
ss2 12961/s 103%   -- -62%
ss1 34367/s 439% 165%   --


2008/3/17 Ivan B. Serezhkin <ivan ÎÁ serezhkin.com>:
> Привет.
>  Может кому и интере�но ?
>  получил приро� в 25 раз на больших файлах.
>  Можете поругать �тиль =)
>  �а очереди �делать нормальный бы�трый драйвер.
>  И к�тати, �то удобный темплейт дл� напи�ани� �воих фильтров, например
>  POE::Filter::Log::Postfix =)
>  И�пользовать так:
>
>  Wheel ...
>  Driver => POE::Driver::SysRW->new( BlockSize => 256*1024*1024) ,
>  Filter => POE::Filter::Regexp->new(qr/RecordSeparator/),
>  ....
>
>
>
>  package POE::Filter::Regexp;
>  use strict;
>
>  sub new {
>  my ($class,$re)=@_;
>  $re ||= qr/\n/;
>  die "Param in new must be a Regexp but this is a ".ref($re) unless ref
>  $re eq 'Regexp';
>  return bless [
>  '', # raw unparsed data
>  [], # ready queue
>  $re,
>  ], $class;
>  }
>
>  sub get {
>  my ($self, $stream) = @_;
>  my @ret;
>  while($self->[0].=shift @$stream){
>  my $p=0;
>  while($self->[0]=~/$self->[2]/g) {
>  next unless $-[0]; #begin of stream
>  push @ret, substr($self->[0], $p, $-[0]-$p);
>  $p=$-[0];
>  }
>  substr($self->[0], 0, $p)=undef;
>  }
>  return \@ret;
>  }
>  1;
>
>  --
>  Ivan B. Serezhkin
>
>  --
>  Moscow.pm mailing list
>  moscow-pm ÎÁ pm.org | http://moscow.pm.org
>  http://mail.pm.org/mailman/listinfo/moscow-pm



-- 
Best regards, Ruslan.
----------- ÓÌÅÄÕÝÁÑ ÞÁÓÔØ -----------
Вложение не в тек�товом формате было извлечено&hellip;
Им�     : poe_filter_split.pl
Тип     : application/x-perl
Размер  : 1978 байтов
Опи�ание: от�ут�твует
Url     : http://mail.pm.org/pipermail/moscow-pm/attachments/20080329/62458892/attachment.bin 


ðÏÄÒÏÂÎÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÓÐÉÓËÅ ÒÁÓÓÙÌËÉ Moscow-pm