Tak jsem si ted udelal takovy maly pokus (ktery si necini naroky byt reprezentativni, ale preci neco vypovida): Jednoduche nahrazovani retezce (the za a v anglickem textu cca 18MB). Perl to ma kolem 1.15u+0.1s, sed za 1.3u+0.1s. (u=user, s=system cas). Ohledne pameti: RSS je u sedu 7288, u perlu 1020.
Toz tedy nevim, co je vlastne overkill :-)))
Mno. Já sem napopuloval ~/buff 1000 kopiemi souboru /usr/share/doc/sed-4.0.5/NEWS ;)
a pustil toto:
vidlak:~/buff$ time for file in *orig; do cat $file | sed -e 's/the/a/g' > $file.sed ;done
real 0m10.953s
user 0m5.930s
sys 0m5.020s
a toto:
vidlak:~/buff$ time for file in *orig; do cat $file | perl -p -i -e 's/the/a/g' > $file.perl ;done
real 0m14.536s
user 0m8.010s
sys 0m6.510s
Na RH7.3 (/usr/share/doc/sed-4.0.5/NEWS ;) a rychlejším stroji to dopadlo pro sed:
real 0m3.732s
user 0m1.660s
sys 0m4.330s
pro perl:
real 0m6.353s
user 0m2.700s
sys 0m6.270s
Chápu, že to není dobrý příklad (jeden ze zbytečných catů kolem nás), ale o něčem to taky vypovídá, když už si budeme lhát pomocí benchmarků :)
Hlavně, sed je všude. Pokud se vyskytujete jen v linuxovém světě, na dost rychlých strojích, a občas se vrtáte ve _velkých_ souborech, tak to může být asi jedno, ale...
No prostě vždycky je to něco za něco a na něco. Nezatracoval bych sed jenom proto, že na něj není vidět. Uff.
Jasne, kazdy nastroj ma sve pouziti. Jen jsem chtel poukazat na to, ze perl umi to co sed + jeste spoustu dalsich veci, to byl smysl meho prispevku. A mimochodem - vase srovnani rika to co jsem rikal vyse - perl ma pomalejsi startup. A take jsem psal, ze v priklade jako je ten ktery jste zde uvedl by nebylo od veci napsat i tu smycku v perlu, to by asi bylo rychlejsi nez bash+sed.