Thread Suche in einem großen file parallelisieren
(3 answers)
Opened by amos at 2014-08-14 16:49
Hallo,
ich versuche mit >8 gleichzeitigen read_only Zugriffen eine große Datei nach 8 verschiedenen Strings durchsuchen. Gibt es eventuell noch einen schnellere Methode als mmap? Meine erste Lösung war das File komplett in den Hauptspeicher zu laden, aber schon das Einlesen dauert auf meinem Notebook 55s pro Gbyte. Ich habe mal was von einer "map reduce" Technik gelesen, welches Perl Modul wäre das, damit ich auch dieses Verfahren mal testen kann? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 #!/usr/bin/perl # Create 1 GB file if you do not have one: # dd if=/dev/urandom of=test.bin bs=1048576 count=1000 use strict; use warnings; use Sys::Mmap; open (my $fh, "test.bin") or die "open: $!"; my $t = time; print "mmapping.. "; mmap (my $mh, 0, PROT_READ, MAP_SHARED, $fh) or die "mmap: $!"; my @all_b = $mh =~ /0xb/g; my $cnt = @all_b; my $runtime = time()-$t; print STDERR "found $cnt 0xb, in $runtime seconds\n"; |