[Cascavel-pm] Duvida expressao regular?

Nilson Santos Figueiredo Junior acid06 em gmail.com
Quinta Outubro 18 09:05:46 PDT 2007


On 10/18/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> A segunda opcao eh "/o", que quer dizer "compile Once" - informa o Perl
> de que a expressao regular em questao nao muda ao longo do programa e
> pode ser compilada apenas uma vez. Isso ajuda a performance do programa,
> quando voce usa expressoes regulares "estaticas" - que nao variam
> dependendo de outras informacoes do seu programa - em loops muito
> longos.

Na verdade, acho que atualmente não faz muito sentido usar a opção /o.
Além de não prover ganhos de performance, ela é, na verdade, um pouco
pior:

  use Benchmark qw/cmpthese/;

  cmpthese(5000, {
      normal => sub {
          for (1000..1999) { $i++ if /[13579]$/ }
      },
      with_o => sub {
          for (1000..1999) { $i++ if /[13579]$/o }
      }
  } );


Resultados:

           Rate normal with_o
  normal 1720/s     --    -2%
  with_o 1758/s     2%     --

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm