Fujtajbl vespolek::
udelal jsem nesmirne zajimave (alespon pro me) zjisteni::
sed ma na mem pocitaci cca 15x rychlejsi vyhledavaci algoritmus nez grep ..
muzete vyzkouset (u me)::
-------------------------------------------------------------------------------
$ echo $(count=0; for x in $(find /usr/share/man/ | sed '/\.gz$/!d'); do count=$(($count + 1)); done && echo $count) & time wait
real 0m1.492s
user 0m1.444s
sys 0m0.056s // vyhledavani pomoci sedu -- zjistujeme pocet polozek zobrazitelnych prikazem man, vyhledavame '\.gz$'
$ echo $(count=0; for x in $(find /usr/share/man/ | egrep '\.gz$'); do count=$(($count + 1)); done && echo $count) & time wait
real 0m22.253s
user 0m22.005s
sys 0m0.196s // vyhledavani pomoci grepu
$ perl -e '$HEH = 22.253 / 1.429; print $HEH."\n";' // spocitame si kolikrat jsme rychlejsi se sedem
15.5724282715185 // uff. nechci se opakovat, ale 15x me dostava
-------------------------------------------------------------------------------
Vyse uvedene prikazy by mely byt naprosto totozne -- v obou vyhledavame vyrazz '\.gz$' mezi manpagema ..
Vystup z prikazu by melo byt cislo, reprezentujici pocet polozek zobrazitelnych prikazem 'man'
Ja mam nainstalovano spousta -dev balicku, takze u me je to cislo relativne velike (11631).
Zajimalo by me, jestli mi i Vy ostatni potvrdite, ze onen vyhledavaci algoritmus v sedu je tolikrat (!15x)
rychlejsi nez v grepu ..
Muj system::
openSuSE 10.3 32bit, kernel 2.6.22.13-0.3-default
GNU grep version 2.5.2
GNU sed version 4.1.5
zdravi ntz
ps.:: zkusil jsem to same s vyrazy::
-------------------------------------------------------------------------------
$ echo $(find /usr/src/linux-2.6.22.13-0.3 | sed '/\.c$/!d') &>/dev/null & time wait
real 0m1.532s
user 0m1.500s
sys 0m0.180s // vyhledavame sedem vsechny '\.c$' ve zdrojacich jadra
$ echo $(find /usr/src/linux-2.6.22.13-0.3 | egrep '\.c$') &>/dev/null & time wait
real 0m21.108s
user 0m21.033s
sys 0m0.136s // vyhledavame grepem vsechny '\.c$' ve zdrojacich jadra
$ perl -e '$FUJ = 21.108 / 1.532; print $FUJ."\n";'
13.7780678851175 // uff. 13x je taky slusny..
$ `for x in $(find /etc/init.d); do if [ ! -d "$x" ]; then sed '/^#/!d' $x; fi; done &>/dev/null` & time wait
real 0m2.072s
user 0m1.064s
sys 0m0.992s // ted pro zmenu ziskavame komentare z /etc/init.d
$ `for x in $(find /etc/init.d); do if [ ! -d "$x" ]; then grep -E '^#' $x; fi; done &>/dev/null` & time wait
real 0m14.970s
user 0m13.777s
sys 0m1.096s
$ perl -e '$FUJ = 14.970 / 2.072; print $FUJ."\n";'
7.22490347490348 // 7x rychlejsi pri praci se skutecnymi soubory
-------------------------------------------------------------------------------
.. a jak vidite sami, o5 podobny vysledek .. po tomto zjisteni tedy budu na filtrovani pouzivat zasadne sed, protoze me nove heslo jest::
GNU grep sucks.. // 10-15x rychlejsi sed me skutecne prekvapil
pps.:: a co na to treba rychlost startu systemu(init skripty) a potazmo jan tleskac?
ad.2)
$ echo $(count=0; for x in $(for x in $(find /etc/init.d); do if [ ! -d "$x" ]; then sed '/\<e\?grep\>/!d' $x; fi; done); do count=$(($count + 1)); done && echo $count)
sed: can't read /etc/init.d/spamd: Permission denied
1912 // as you can see, this scary command returns, that grep is used in /etc/init.d in 1912 cases -- & i presume, that in most of them
(likely very close to all of them) as a filter (& anyway, for what else should be used?)..