Se a idéia é selecionar o grupo que não faz match e trabalhar com ele ... assim tb poderia ser:<br><br>$regexp = join(&#39;|&#39;,@re);<br>@selected = grep !/^($regexp)$/, @paths;<br><br>Apenas mais uma maneira de fazer!! =P<br>
<br><div class="gmail_quote">2009/2/20 Marco Lima <span dir="ltr">&lt;<a href="mailto:braun.lima@gmail.com" target="_blank">braun.lima@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;">

Salve isso dá até um Golf =P<br><br>foreach $path (@paths) { <br>&nbsp;&nbsp;&nbsp; next if map { $path =~ m/^$_$/g } @re;<br>}<br><br><div class="gmail_quote">2009/2/20 Lindolfo Lorn Rodrigues <span dir="ltr">&lt;<a href="http://lorn.br" target="_blank">lorn.br</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt;</span><div>

<div></div><div><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">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" target="_blank">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><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>-- <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" 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></blockquote></div><font color="#888888"><br><br clear="all"><br>-- <br>--Lindolfo &quot;Lorn&quot; Rodrigues<br>


<a href="http://www.slackwarezine.com.br" target="_blank">www.slackwarezine.com.br</a><br>
<a href="http://lornlab.org" target="_blank">http://lornlab.org</a><br><a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>use Catalyst;<br>
</font><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></blockquote></div></div></div><font color="#888888"><br><br clear="all"><br>-- <br><br>Marco Lima<br>

<a href="mailto:braun.lima@gmail.com" target="_blank">braun.lima@gmail.com</a><br>
<br>&quot;Ter acesso ao conhecimento é um dever de todos; transmitir conhecimento é um dever de quem tem.&quot;<br><br>&quot;Na visão do hacker, o sentido da vida está em dedicar-se a uma paixão. Esta paixão é, na realidade, uma atividade significativa, inspiradora e prazerosa para o indivíduo, seja ela rotulada como &quot;trabalho&quot; ou como &quot;diversão.&quot; <br>



</font></blockquote></div><br><br clear="all"><br>-- <br><br>Marco Lima<br><a href="mailto:braun.lima@gmail.com" target="_blank">braun.lima@gmail.com</a><br><br>&quot;Ter acesso ao conhecimento é um dever de todos; transmitir conhecimento é um dever de quem tem.&quot;<br>

<br>&quot;Na visão do hacker, o sentido da vida está em dedicar-se a uma paixão. Esta paixão é, na realidade, uma atividade significativa, inspiradora e prazerosa para o indivíduo, seja ela rotulada como &quot;trabalho&quot; ou como &quot;diversão.&quot; <br>