[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Curiosit? grep



> Primo dubbio, secondo voi quale dei due ? piu' veloce?

grep 'foo' nomefile 

Usando cat file | grep esegui 2 comandi invece che uno e utilizzi una
pipe in piu', quindi e' piu prestazionale il primo caso.

Un semplice benchmark al volo:

time for i in $(seq 1 5000) ; do grep mail antani >- ; done
real    0m13.316s
user    0m5.028s
sys     0m8.073s

time for i in $(seq 1 5000) ; do cat antani | grep mail >- ; done
real    0m23.174s
user    0m8.509s
sys     0m14.653s


> Secondo dubbio, esistono altri modi per parsare un
> file di tali dimensioni senza aspettare tempi biblici e
> nel mentre andare a prendersi un caff? molto molto lungo???


Non ho mai guardato a fondo il codice di grep quindi non so quanto e se
la sua implementazione possa essere ottimizzata per file di grandi
dimensioni, ma comunque la vogliamo mettere con qualsiasi
implementazione, se il file e' veramente grosso ovviamente ci mettera'
anche molto tempo.

In questi casi a mio parere ci sono solo due soluzioni possibili:

1- distribuire il lavoro:

Piu macchina (o piu processori) eseguono calcolo parallelo, quindi qualcosa distribuisce un
"pezzettino" del file a diversi "grep" o diversi thread che "greppano"
il loro pezzettino in parallelo.

2- fare un pre-index

Quindi il lavoro lungo lo lasci magari in background ala updatedb per il
locate, e poi tu non fai altro che andare a cercare nel tuo index quando
hai bisogno il dato e non piu' a rifare il "grep" ogni volta. Questa e'
la soluzione adattata dai vari beagle e simili ad esempio.

 
> Mah, chiss? perch? mi faccio ste deomande strane ;)

Non sono poi cosi' strane direi.
 

-- 

Franco (nextime) Lanza
Busto Arsizio - Italy
SIP://casa@casa.nexlab.it

NO TCPA: http://www.no1984.org
you can download my public key at:
http://danex.nexlab.it/nextime.asc || Key Servers
Key ID = D6132D50
Key fingerprint = 66ED 5211 9D59 DA53 1DF7  4189 DFED F580 D613 2D50
-----------------------------------
echo 16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D212153574F444E49572045535520454D20454B414D204F54204847554F4E452059415020544F4E4E4143205345544147204C4C4942snlbxq | dc
-----------------------------------

Attachment: signature.asc
Description: PGP signature


Reply to: