O Benchmark não mente :) Fernando++<br><br><div class="gmail_quote">2009/2/20 Fernando Oliveira <span dir="ltr">&lt;<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com</a>&gt;</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 &#39;<br><br>@a = map {&quot;a$_&quot;.&quot;b&quot;} 1 .. 150_000;<br><br>@b = &quot;a&quot; .. &quot;e&quot;;<br><br>sub a{<br>&nbsp;&nbsp; for my $a (@a){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for my $b (@b){<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next if $a =~ /^$b/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>}<br><br><br>sub b{<br>&nbsp;&nbsp; for my $a (@a){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next if $a =~ /^a/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next if $a =~ /^b/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next if $a =~ /^c/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next if $a =~ /^d/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next if $a =~ /^e/;<br>

&nbsp;&nbsp; }<br>}<br><br><br>cmpthese(50, {a =&gt; \&amp;a, b =&gt; \&amp;b});<br>&#39;<br>&nbsp;&nbsp;&nbsp; s/iter&nbsp;&nbsp;&nbsp;&nbsp; a&nbsp;&nbsp;&nbsp;&nbsp; b<br>a&nbsp;&nbsp;&nbsp;&nbsp; 3.40&nbsp;&nbsp;&nbsp; --&nbsp; -98%<br>b 6.44e-02 5175%&nbsp;&nbsp;&nbsp; --<div><div></div><div class="Wj3C7c"><br><br><br><br><div class="gmail_quote">
2009/2/20 Lucas Mateus <span dir="ltr">&lt;<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>&gt;</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 &lt;<a href="mailto:fernandocorrea@gmail.com" target="_blank">fernandocorrea@gmail.com</a>&gt; 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 &lt;<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank">lucasmateus.oliveira@gmail.com</a>&gt;<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; &nbsp; &nbsp;# lista de RegExp 60 itens<br>
my @paths; # lista de Paths 750.000 itens<br>
<br>
foreach my $path (@paths)<br>
{<br>
 &nbsp;map<br>
 &nbsp;{<br>
 &nbsp; &nbsp; if ($path =~ /^$_$/)<br>
 &nbsp; &nbsp; {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; next;<br>
 &nbsp; &nbsp; }<br>
 &nbsp;} @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>
 &nbsp;next if ($path =~ /^regex_1$/);<br>
 &nbsp;next if ($path =~ /^regex_2$/);<br>
 &nbsp;next if ($path =~ /^regex_3$/);<br>
 &nbsp;next if ($path =~ /^regex_4$/);<br>
 &nbsp;.<br>
 &nbsp;.<br>
 &nbsp;.<br>
 &nbsp;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 &quot;Lorn&quot; 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>