tu peux éventuellement le faire par un simple script en te servant du fait que les tables de hachage utilisent.. des hachages, si tu peux disposer d'assez de mémoire :
avec un fichier de 80M ça bouffe 60M de mémoire :
[gc@meuh /tmp] perl -ne 'sub mem { open F, "/proc/self/status"; @foo = <F>; "@foo" =~ /VmRSS:(.*)/ and print "mem usage: 1ドル\n"; }; BEGIN { mem() } chomp; $a{$_}++; END { mem(); print "number of files in index: ".int(keys %a)."\n"; while (<STDIN>) { chomp; print "was $_ present in file? -> "; print exists $a{$_}; print "\n"; } }' /tmp/log2
mem usage: 1444 kB
mem usage: 60444 kB
number of files in index: 495353
foo
was foo present in file? ->
/usr/bin
was /usr/bin present in file? -> 1
l'indexation prend environ 2,5 seconde, puis les réponses sont instantanées.
# meuh
Posté par gc . En réponse au message Recherche optimisée dans un fichier. Évalué à 2.
avec un fichier de 80M ça bouffe 60M de mémoire :
[gc@meuh /tmp] perl -ne 'sub mem { open F, "/proc/self/status"; @foo = <F>; "@foo" =~ /VmRSS:(.*)/ and print "mem usage: 1ドル\n"; }; BEGIN { mem() } chomp; $a{$_}++; END { mem(); print "number of files in index: ".int(keys %a)."\n"; while (<STDIN>) { chomp; print "was $_ present in file? -> "; print exists $a{$_}; print "\n"; } }' /tmp/log2
mem usage: 1444 kB
mem usage: 60444 kB
number of files in index: 495353
foo
was foo present in file? ->
/usr/bin
was /usr/bin present in file? -> 1
l'indexation prend environ 2,5 seconde, puis les réponses sont instantanées.