perl vs grep

Karel Zak zakkr na zf.jcu.cz
Úterý Duben 24 17:11:24 CEST 2001


On Tue, Apr 24, 2001 at 04:30:13PM +0200, pons na post.cz wrote:
> >Nevim, me se to nezda, ale zkousel jsem jenom jeden soubor 
> >Jeste bych se chtel ujistit, ze zminovany textovy soubor slovnik
> >byl opravdu textovy s radky ukoncenymi '\n'.
> 
> 
> Proto me to zaujalo: je to obycejny textovy fajl, 
> ve kterem jsou radky:
> "    slovo preklad\n"
> a kdyz jsem poustel perl script s vyhledavanim,
> zdal se mi hodne pomaly. Proto jsem napsal zkusmo
> ony vyse zminene prikazy
> >perl -ne 'print if /slovo/' file
> >grep -e 'slovo' file
> a dosel k onem take predesle zminenym vysledkum.
> 
> >$ time grep -e 'CREATE' radl.dump
> >real    0m15.468s
> >user    0m0.140s
> >sys     0m0.580s
> >$ time perl  -ne 'print if /CREATE/' radl.dump
> >real    0m15.946s
> >user    0m8.300s
> >sys     0m0.500s
> >$ perl -v
> >This is perl, v5.6.0 built for i386-linux
> >$ grep -V
> >grep (GNU grep) 2.4.2
> 
> 
> Vase casy vypadaji pekne, nezapiram :o)
> Nevim vsak proc ty moje jsou tak odlisne.
> 
> Mozna bych preci jen mel poznamenat, 
> ze muj perl i grep bezi na Irixu 6.5.
> Nicmene, i po preneseni slovniku na linuxovy stroj (RH6.1,
> perl 5.5.003, grep 2.3) dosahuji podobnych
> pro perl zabrzdenych vysledku (6x).
> hm.

 Debian (i386, 2.2.17, perl:5.005_03 , grep:2.4.2):

$ time perl  -ne 'print if /CREATE/' sql1992.txt > /dev/null

real    0m0.483s
user    0m0.470s
sys     0m0.010s

$ time grep -e 'CREATE' sql1992.txt > /dev/null

real    0m0.028s
user    0m0.020s
sys     0m0.000s

 Pro zajimavost se podivejte na vypis strace pro vyse uvedene prikazy.

Napr. volani read() pro muj priklad:

 grep 52x		
 perl 408x :-)
 
Jinak u grep jde pouzit option --mmap a pak tam neni read() zadne
(necekane:-)

 Stejne tak perl loaduje cca 7 knihoven, coz grep napr, libcrypt moc
nepouziva:-) 


 IMHO tady nekdo trosinku keca a nebo to bylo mysleno jinak :-)

 (I naivni implementace while() { neco }  na deset radku v C bude rychlejsi 
nez ten cas co dava perl).

		Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Linux