O Benchmark não mente :) Fernando++<br><br><div class="gmail_quote">2009/2/20 Fernando Oliveira <span dir="ltr"><<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
pois é...<br><br>perl -MBenchmark=cmpthese -e '<br><br>@a = map {"a$_"."b"} 1 .. 150_000;<br><br>@b = "a" .. "e";<br><br>sub a{<br> for my $a (@a){<br> for my $b (@b){<br>
next if $a =~ /^$b/;<br> }<br> }<br>}<br><br><br>sub b{<br> for my $a (@a){<br> next if $a =~ /^a/;<br> next if $a =~ /^b/;<br> next if $a =~ /^c/;<br> next if $a =~ /^d/;<br> next if $a =~ /^e/;<br>
}<br>}<br><br><br>cmpthese(50, {a => \&a, b => \&b});<br>'<br> s/iter a b<br>a 3.40 -- -98%<br>b 6.44e-02 5175% --<div><div></div><div class="Wj3C7c"><br><br><br><br><div class="gmail_quote">
2009/2/20 Lucas Mateus <span dir="ltr"><<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Brother, pode ate ser que isso traria um custo, mas não justifica esses numeros:<br>
<br>
EXEMPLO_1: 10.000 paths/17seg<br>
EXEMPLO_2: 750.000 paths/22seg<br>
<br>
DETALHES: SO RH5 64, 8 GB RAM, 2 Proc Quad Xeon<div><div></div><div><br>
<br>
<br>
On Fri, 20 Feb 2009 15:17:24 -0300, Fernando Oliveira <<a href="mailto:fernandocorrea@gmail.com" target="_blank">fernandocorrea@gmail.com</a>> wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Vc está usando um map em contexto void, o map guarda o array de resposta na<br>
memoria...<br>
<br>
2009/2/20 Lucas Mateus <<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Estou em uma situação prática em que tenho um ARRAY com 750.000 itens, cada<br>
item deve se submeter a 60 RegExp, obtendo match faço um next.<br>
<br>
Os dois codigos abaixo (o mais simples que consegui representar) fazem a<br>
mesma coisa, porem o EXEMPLO_1 tem performance extremamente inferior que o<br>
EXEMPLO_2.<br>
<br>
Gostaria de saber dos Mongers justificativa para isso. Seria a RegExp<br>
dinâmica ?<br>
<br>
<br>
<br>
EXEMPLO_1<br>
[code]<br>
<br>
my @re; # lista de RegExp 60 itens<br>
my @paths; # lista de Paths 750.000 itens<br>
<br>
foreach my $path (@paths)<br>
{<br>
map<br>
{<br>
if ($path =~ /^$_$/)<br>
{<br>
next;<br>
}<br>
} @re<br>
}<br>
<br>
[/code]<br>
<br>
<br>
<br>
<br>
<br>
EXEMPLO_2<br>
[code]<br>
my @paths; # lista de Paths 750.000 itens<br>
<br>
foreach my $path (@paths)<br>
{<br>
next if ($path =~ /^regex_1$/);<br>
next if ($path =~ /^regex_2$/);<br>
next if ($path =~ /^regex_3$/);<br>
next if ($path =~ /^regex_4$/);<br>
.<br>
.<br>
.<br>
next if ($path =~ /^regex_60$/);<br>
}<br>
<br>
[/code]<br>
<br>
<br>
<br>
<br>
--<br>
Lucas Mateus<br>
Núcleo de Páginas Rápidas e SEO<br>
Fone: 55 11 3065-9978<br>
MSN: <a href="mailto:lucasmateus_777@hotmail.com" target="_blank">lucasmateus_777@hotmail.com</a><br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
<br>
</blockquote>
<br>
<br>
<br>
</blockquote>
<br>
<br>
<br>
-- <br></div></div><font color="#888888">
Lucas Mateus<br>
iG - Núcleo de Páginas Rápidas e SEO</font><div><div></div><div><br>
Fone: 55 11 3065-9978<br>
MSN: <a href="mailto:lucasmateus_777@hotmail.com" target="_blank">lucasmateus_777@hotmail.com</a><br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br></div></div><div><div></div><div class="Wj3C7c">-- <br>Just another Perl Hacker,<br>Fernando (SmokeMachine)<br><a href="http://perl-e.org" target="_blank">http://perl-e.org</a><br>
</div></div><br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>--Lindolfo "Lorn" Rodrigues<br><a href="http://www.slackwarezine.com.br">www.slackwarezine.com.br</a><br>
<a href="http://lornlab.org">http://lornlab.org</a><br><a href="http://sao-paulo.pm.org">http://sao-paulo.pm.org</a><br>use Catalyst;<br>