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