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