Regularni vyraz

Petr Kolar PETR.KOLAR na vslib.cz
Středa Únor 10 17:35:48 MET 1999


adelton na fi.muni.cz (Honza Pazdziora) wrote:
> coz neni uplne zanedbatelne. Nejak intuitivne tusim, ze je to tim, ze
> \s* uspeje vlastne mezi kazdymi dvema pismeny, to znamena, ze ma vsude
> uspech a teprve pak se porovnava $, zatimco \s+ muze uspet jen na
> korektni mezere, tedy pripadu, kdy se porovnava $ je mene. Proste \s*
> ma vice uspechu, ktere pri nesplnenem $ vedou k backtrackovani, nez
> \s+. Viz. MRE.

   To jsem necetl :-( , ale vzdycky jsem si myslel, ze regularni vyrazy,
v nichz je ^ nebo $ jsou nejak optimalizovane...

use Benchmark;
timethese(100000, {
  'chop' => sub { $a = "Hello, world!\n"; chop($a); },
  'subst' => sub { $a = "Hello, world!\n"; $a=~s/\n+$//; },
  'substi' => sub { $a = "Hello, world!\n"; $a=~s/\n*$//; },
});

Benchmark: timing 100000 iterations of chop, subst, substi...
      chop:  0 secs ( 0.58 usr  0.00 sys =  0.58 cpu)
     subst:  0 secs ( 0.85 usr  0.00 sys =  0.85 cpu)
    substi:  2 secs ( 2.19 usr  0.00 sys =  2.19 cpu)

Tady je ten rozdil dost markantni. Na druhou stranu rozdil mezi prvnimi 
dvema radky mi nestoji za to, abych po nacteni radku ze souboru pouzival
chop a riskoval, ze posledni radek bude bez \n a nasledne bez posledniho 
znaku...

                                                    S pozdravem
--
                          ***  Petr Kolar  ***
 Department of Information Technologies, Technical University of Liberec
             Voronezska 1329, 461 17 Liberec, Czech Republic
             Phone: +420-48-535-2371   Fax: +420-48-535-2229
  E-mail: Petr.Kolar na vslib.cz  http://asterix.vslib.cz/staff/kolar.html


Další informace o konferenci Perl