[Rio-pm] Performance de regex

Solli Honorio shonorio em gmail.com
Quinta Março 18 01:58:41 PDT 2010


2010/3/18 Marcos Machado <listas em istf.com.br>

> Vamos por partes:
>
> Alexei, não, o objetivo é pegar começando com STR1 ou contendo STR2. Do
> jeito que fez, acho que vai ser preciso sempre começar com STR1 ou STR2.
>
> Solli, sim, o resultado é o mesmo. Se a linha não começar com STR1 e não
> contiver STR2 ele imprime. Juntar duas negativas para dar um resultado
> positivo é pegajoso. Realmente ficou horrível.
>
>
MM é que eu não o ! , eu não estava lendo a negação ...


> Fernando, você está certo. A STR2 até pode começar a linha, mas não é
> obrigatório.
>
> Neilson, segundo o Eden, Seu Morgan disse que tá certo (e funcionou). :)
>

Ok, mas ficou claro pq funcionou da segunda maneira ? É que na primeira
maneira a regex está analisando posição por posição toda a string em todas
as opções de comparação, ou seja ele não compra a palavra 'string1' na
sentença 'eu nao tenho a string3', ele pega o primeiro caracter da 'string1'
e sai comparando em toda sentença, se não achar, vai fazer o mesmo com a
segunda opção. Eu nem consigo imaginar a quantida de vezes que ele deve ter
feito isto no teu arquivo. O perldoc perlretut, na seção de 'Grouping
things...' explica isto melhor ... agora vem o Edenc falando o sr. JP
Morgan, desde quando da para confiar numa lei de um banqueiro ;D ....


>
> Eden, usei a condição na forma negada pois, como sempre, a coisa foi sendo
> adaptada de outros testes, feitos por outras pessoas, e na hora eu nem me
> toquei em inverter e usar um unless.
>
> Como foi um job pontual, mesmo em 7 minutos já tava valendo. Só fiquei
> curioso se podia melhorar, já que logo apareceram os bacalhoeiros do
> awk+grep+raio+q+oparta dizendo que eram mais rápidos!
>
> :P
>
> Obrigado!
>
> []s, MM
>
>
> Em 17 de março de 2010 21:12, Eden Cardim <edencardim em gmail.com> escreveu:
>
> 2010/3/17 Eden Cardim <edencardim em gmail.com>:
>> > Não está errado, !/^string1/ && !/string2/ é equivalente a /^string1/
>> > || /string2/, pelas leis de De Morgan, se não me engano, o Perl
>> > otimiza isso (a versão sem negação é mais rápida). Falta saber porque
>> > a preferência por expressar a condição na forma negada.
>>
>> Hm, parece que não otimiza, eu me lembro que tinha visto o Perl mecher
>> em operadores short-cut rodando com -MO=Deparse, mas ele faz outra
>> otimização, não essa.
>>
>> --
>>   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
>>  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
>>  Shadowcat Systems Ltd.  Want a managed development or deployment
>> platform?
>> http://edenc.vox.com/            http://www.shadowcat.co.uk/servers/
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20100318/6adf6d17/attachment-0001.html>


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