Deliri su grep

Questo è il mio nuovo PC:
gentoobox ~ # time dd if=/dev/urandom of=prova.rnd bs=1M count=6k
6144+0 records in
6144+0 records out
6442450944 bytes (6.4 GB, 6.0 GiB) copied, 17.8593 s, 361 MB/s

real 0m17.875s
user 0m0.010s
sys 0m16.855s

Vediamo qualche ricerca case sensitive e insensitive.

Il primo giro lo faccio 2 volte per vedere se il SO cacha qualcosa o meno:

gentoobox ~ # time grep provaprovaprova prova.rnd

real 0m1.630s
user 0m1.392s
sys 0m0.238s
gentoobox ~ # time grep provaprovaprova prova.rnd

real 0m1.697s
user 0m1.435s
sys 0m0.297s
gentoobox ~ # time grep -i provaprovaprova prova.rnd

real 0m3.445s
user 0m2.941s
sys 0m0.623s
gentoobox ~ # time fgrep provaprovaprova prova.rnd

real 0m1.623s
user 0m1.259s
sys 0m0.467s
gentoobox ~ # time fgrep -i provaprovaprova prova.rnd

real 0m1.693s
user 0m1.397s
sys 0m0.396s

Nessuna cache, le ricerche insensitive sono più lente. Non ci sono vantaggi ad usare fgrep questa volta.

Proviamo con un po’ di IPv4:
gentoobox ~ # time grep 192.168.0.1 prova.rnd

real 0m1.835s
user 0m1.316s
sys 0m0.526s
gentoobox ~ # time grep -i 192.168.0.1 prova.rnd

real 0m1.836s
user 0m1.617s
sys 0m0.260s
gentoobox ~ # time grep 192\.168\.0\.1 prova.rnd

real 0m1.835s
user 0m1.436s
sys 0m0.420s
gentoobox ~ # time fgrep 192.168.0.1 prova.rnd

real 0m1.585s
user 0m1.222s
sys 0m0.653s
gentoobox ~ # time grep 192[\.]168[\.]0[\.]1 prova.rnd

real 0m1.587s
user 0m1.016s
sys 0m0.719s

Non c’è storia: meglio sempre usare fgrep se si sta cercando una stringa esatta… e escapare i punti non è semplice come sembra.
Le ricerche case insensitive ci mettono lo stesso tempo se si cercano solo numeri e punti.

Ora provo a far faticare un po’ la CPU:
gentoobox ~ # time grep 'aaabaa\|bvvvdeed\|cdddeffe' prova.rnd

real 0m3.657s
user 0m3.151s
sys 0m0.527s
gentoobox ~ # time grep -i 'aaabaa\|bvvvdeed\|cdddeffe' prova.rnd

real 0m4.360s
user 0m3.779s
sys 0m0.650s

Mah… direi non ci siamo ancora.

gentoobox ~ # time grep '.*provaprovaprova.*provaprovaprova.*provaprovaprova.*\|.*1234567.*1.*2.*' prova.rnd

real 0m22.467s
user 0m21.917s
sys 0m0.550s
gentoobox ~ # time grep -i '.*provaprovaprova.*provaprovaprova.*provaprovaprova.*\|.*1234567.*1.*2.*' prova.rnd

real 0m22.088s
user 0m21.576s
sys 0m0.542s

Ops! Non saprei cosa è successo qui…

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *