Thread Geschwindigkeit beim Parsen
(13 answers)
Opened by Oliver007 at 2013-01-10 15:09
Dein Code ist sehr unvollständig und schlecht formatiert. Einige Sachen kann und sollte man anders schreiben.
Mal eine etwas überarbeitete Variante soweit ich es verstanden habe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 #!/usr/bin/perl use strict; use warnings; my $workdir='*****'; my $workfile='*****'; my $outfile='C:\Temp\archiv4\Daten.txt'; ##-------------Verzeichnisse holen my @dir; { opendir(my $dh , $workdir) or die "Cant open DIR: $workdir ($!)\n"; my @dir=grep{!/^\.\.?$/}readdir($dh); close $dh; } my $text=''; print "Open Dirs \n"; print "-------\n"; for my $dir (@dir) { print $dir."\n"; # ist das so geplant ??? my $path=join('\\',$workdir,$dir,$workfile); ##------------Datei öffnen print "Report: parsing $path\n"; my %outputTable = parseData($path); ##------------Test if (exists $outputTable{"4"}) { $outputTable{"3"}=$outputTable{"3"}+$outputTable{"4"}; delete $outputTable{"4"}; } ##------------Ausgabe in String while ( my ($Name,$Wert) = each( %outputTable) ) { print "Tag: $Name, $Wert\n"; $text .= "$Wert\t"; } $text .= $dir."\n"; print "--------------------------\n"; } #Daten schreiben open (my $fh, ">" $outfile) or Win32::MsgBox("Die Ausgabedatei $outfile konnte nicht erzeugt werden: $!\n"); print $fh $text; close $fh; sub parseData { my $path=shift(@_); my %Table; open(my $fh, '<', $path) or die "can't open $path ($!)\n"; my @fullTable=<$fh>; close($fh); ##finde Positionen von **** and **** durch erste Zeile # füllen von %Table aus @fullTable ??? # zeige mal genauer was hier passiert. # möglicherweise lässt sich das effizienter gestalten. return %Table; } Da der Code nicht vollständig ist kann ich das auch nicht testen. Last edited: 2013-01-10 20:49:36 +0100 (CET) |