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

Linuxer
 2013-01-10 19:03
#164865 #164865
User since
2006-01-27
3871 Artikel
HausmeisterIn

user image
2013-01-10T15:22:57 Oliver007
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";


Was ist mit der Zeile #finde Positionen von **** and **** durch erste Zeile? was passiert da?
Ich nehme an, dass da noch Code ausgeführt wird, den Du hier nicht zeigst.
Hast Du die Zeitsteigerung auch, wenn dieser Code nicht dabei ist?

Das reine wiederholte Einlesen kann eigentlich nicht Ursache Deines Problems sein.
Ich kriege es jedenfalls nicht nachgestellt.

Test mit 6 Datendateien zu je 60 MB (data.1 bis data.6); Testskript:
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
#! /usr/bin/perl
use strict;
use warnings;

use Time::HiRes qw( gettimeofday tv_interval );

my $i=0;
for my $file ( glob("data.*") ) {

    open FH, $file or die "$file: $!\n";
    parsedata(++$i);
    close FH;

}

sub parsedata {
    my $run = shift;

    my $line;
    my @lines;

    my $t0 = [ gettimeofday ];

    for $line ( <FH> ) {
        push @lines, $line;
    }

    my $t1 = [ gettimeofday ];

    print "$run Run: ", tv_interval( $t0, $t1  ), "\n";

}

__END__


Ergebnis:
Code: (dl )
1
2
3
4
5
6
1 Run: 0.573292
2 Run: 0.4999
3 Run: 0.49994
4 Run: 0.499677
5 Run: 0.499855
6 Run: 0.499921

Last edited: 2013-01-10 19:10:24 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Geschwindigkeit beim Parsen