Thread Performance Problem mit Perl bei RegEx
(34 answers)
Opened by nomoresecrets at 2009-05-11 17:16
Hallo Leute,
habe ein kleines Problem und vllt kann mir wer einen Tipp geben!? Meine Umgebung sieht in etwa so aus: * ich habe ein txt-file mit ~1,5GB Größe * ich suche einen festen String (später dann auch variable, bzw Strings wo ich einfach regex brauch um sie zu beschreiben) * ich zähle die Treffer mit * ich gebe die Trefferanzahl aus das Ganze habe ich in Perl und Java (nich schlagen, war eher aus Interesse um belegen zu können wie toll doch Perl ist) umgesetzt Quellcode siehe Links weiter unten. Mein Problem ist nun, dass Java ~30% schneller ist wenn ich regex nehme und wenn ich die Methode contains nutze, dann sogar 10x so schnell wie mein Perlscript. Das kann doch irgendwo nicht sein oder? Ich hab auch schon mit direktem Stringvergleich, Substringvergleich, index und diversen regex-flags rumprobiert, aber es wird einfach nicht besser :( Da das Programm später 100+GB Textfiles durchforsten muss, ist auch nur der geringste Performanceschub wichtig für mich. hier die beiden Quellcodes: Perl hat eine Laufzeit von ca 4min30s, das Java-Ding mit Regex ~3min und mit contains nur ~35s Hat wer eine Idee warum Perl so extrem langsam ist? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 open TRACEFILE, "<C:\\myfile.txt" or die "cannot open tracefile"; my $found=0; while (!eof TRACEFILE) { $in_line = <TRACEFILE>; # lese aktuelle Zeile ein chomp($in_line); if ($in_line =~ m/CP_NG/) { $found++; } } print "anzahl treffer: $found\n"; Code: (dl
)
1 import java.io.BufferedReader; Vielen Dank schonmal Grüße nms |