]>
git.ipfire.org Git - thirdparty/bird.git/blob - proto/perf/parse.pl
9 has
'exp' => ( is
=> 'ro' , 'isa' => 'Num' );
10 has
'gen' => ( is
=> 'ro' , 'isa' => 'Num' );
11 has
'temp' => ( is
=> 'ro' , 'isa' => 'Num' );
12 has
'update' => ( is
=> 'ro' , 'isa' => 'Num' );
13 has
'withdraw' => ( is
=> 'ro' , 'isa' => 'Num' );
18 my $N = 1 << $self -> exp ;
21 gen
=> $self -> gen / $N ,
22 temp
=> $self -> temp / $N ,
23 update
=> $self -> update / $N ,
24 withdraw
=> $self -> withdraw / $N
31 print $fh join "," , $self -> exp , $self -> gen , $self -> temp , $self -> update , $self -> withdraw ;
59 isa
=> 'ArrayRef[row]' ,
60 default => sub { [] },
67 builder
=> '_build_stub' ,
73 my $date = $self -> date ;
74 my $name = $self -> name ;
76 my $reduced = "-reduced" if $self -> reduced ;
78 my $stub = $date . "-" . $name . $reduced ;
80 $stub =~ tr/a-zA-Z0-9_-/@/c ;
86 push @
{ $self -> rows }, row
-> new ( @_ );
92 return $self if $self -> reduced ;
99 map { $_ -> reduce } @
{ $self -> rows }
106 my $fn = $self -> stub . ".csv" ;
108 open my $CSV , ">" , $fn ;
120 my $csv = $self -> dump ();
121 my $svg = $self -> stub . ".svg" ;
123 my $title = $self -> name ;
126 open PLOT
, "|-" , "gnuplot -p" ;
127 print PLOT
"set terminal svg; \n " ;
128 print PLOT
"set output ' $svg '; \n " ;
129 print PLOT
"set title ' $title '; \n " ;
130 print PLOT
"set datafile separator ','; \n " ;
131 print PLOT
"set jitter over 0.3 spread 0.3; \n " ;
132 print PLOT
"plot ' $csv ' using 1:2 title 'gen', ' $csv ' using 1:3 title 'temp', ' $csv ' using 1:4 title 'update', ' $csv ' using 1:5 title 'withdraw'; \n " ;
142 if ( m/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*?Perf (.+) starting$/ ) {
145 die "Garbled input data" if exists $results { $name };
146 $results { $name } = results
-> new ( name
=> $name , date
=> $date );
150 if ( m/Perf (.+) done with exp=(\d+)$/ ) {
152 die "Garbled input data" unless exists $results { $name };
153 push @done , $results { $name };
154 delete $results { $name };
158 my ( $name , $exp , $gen , $temp , $update , $withdraw ) = m/Perf (.+) exp=(\d+) times: gen=(\d+) temp=(\d+) update=(\d+) withdraw=(\d+)$/ or next ;
160 exists $results { $name } or die "Garbled input data" ;
162 $results { $name }-> add ( exp => $exp , gen
=> $gen , temp
=> $temp , update
=> $update , withdraw
=> $withdraw );
165 scalar %results and die "Incomplete input data" ;
167 foreach my $res ( @done ) {
168 $res -> reduce -> draw ();