Thread Geschwindigkeit beim Parsen (13 answers)
Opened by Oliver007 at 2013-01-10 15:09

Oliver007
 2013-01-10 16:22
#164851 #164851
User since
2013-01-07
8 Artikel
BenutzerIn
[default_avatar]
Code: (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
##-------------Verzeichnisse holen
opendir(LOGFILE,"*****") or die "Cant open File Directory\n";
@dir=readdir(LOGFILE);
close LOGFILE;
shift @dir;
shift @dir;

##------------Datei öffnen
print "Open Dirs \n";
print "-------\n";
for $i1(0..$#dir)
{
open(LOGFILE2,"<*****") or die "cant open txt \n";
$file = LOGFILE2;
print $dir[$i1];print "\n";
parseData();
##------------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: ";print"$Name, $Wert\n";
$text = $text.$Wert." ";
}
$text = $text.$dir[$i1]."\n";
print "--------------------------\n";
%outputTable =();
close LOGFILE2;
}

#Daten schreiben
open (TXT, ">C:/Temp/archiv4/Daten.txt") or Win32::MsgBox("Die Ausgabedatei konnte nicht erzeugt werden: $!\n");
print TXT $text;
close TXT;


Die Funktion parseData
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#sub to extract the needed Data and made math functions
sub parseData{

print "Report: parsing $file\n";
#read file
my $line; my @fullTable;
for $line (<LOGFILE2>)
{
push(@fullTable,$line);
}
#finde Positionen von **** and **** durch erste Zeile
print "zZz\n";
}

Das Zeit Laqg entsteht in der Funktion parseData. An der Stelle bei
Code: (dl )
for $line (<LOGFILE2>)
bis print
Code: (dl )
"zZz\n";


Den rest der Funktion darf ich nicht zeigen, ist aber für das Problemk auch ausgeschlossen dass daher noch Defiziet kommt.

@pq:Die Zeit messe ich mit meiner Uhr und der Faktor vom ersten einlesen zum zweiten ist 1 zu 30; my @fullTable = <LOGFILE2>; bringt kein Zeitlichen Vorteil. http://perl-tutorial.org/ hab ich schon gelesen :)

@ Linuxer: Dachte @fullTable wird durch dem Aufruf der Funktion parseData da mit my deklariert bei jeden Auruf wieder gelehrt?

@ GwenDragon; das mache ich in den folgenden Zeilen der Funktion parseData. Das läuft aber Zeitlich problemlos.

Die Daten sind 60-180 MB Excel Dateien.

Vielen Dank für die Hilfestellungen und Viele Grüße Oliver
Last edited: 2013-01-10 16:52:34 +0100 (CET)

View full thread Geschwindigkeit beim Parsen