#!/usr/bin/perl


system("mkdir -p data graph");

foreach $file (@ARGV) {

  my($mhz);
  my(%rates);

  open(FILE, "$file") || die "can not open $file: $!\n";
  ($prefix=$file) =~ s/([^\.]*)\..*/\1/;
  
  while(<FILE>) {
    last if (/^Running with/);
    chop;
    ($thing,$value)=split(/: /);
    $thing=~s/[ \t]+$//;
    #print "T|$thing| <- $value\n";
    $cpuinfo{$thing}=$value;
  }
  
  while(<FILE>) {
    next if (/^Running/);
    chop;
    ($driver, $sectime, $sec, $size, $alg, $op, $size, $bytes, $rate, $rateunits, $megarate, $megarateunits)=split;
    
    #print "D|$alg/$driver/$size| <- $megarate\n";
    $rates{$alg}{$driver}{$size}=$megarate;
  }

  $mhz=$cpuinfo{"cpu MHz"};
  $mhz=int($mhz);

  open(GNUPLOT, "|gnuplot -") || die "can not run gnuplot: $!\n";
  $out=GNUPLOT;
  #$out=STDOUT;

  @alldrivers=();

  foreach $alg (sort keys %rates)
    {
      my(@drivers) = (sort keys %{ $rates{$alg} } );
      print $out "set terminal png\n";
      print $out "set output 'graph/$prefix.$mhz.$alg.png'\n";
      print $out "set xlabel 'request size'\n";
      print $out "set yrange [0:1024]\n";
      print $out "set ylabel 'megabits/sec'\n";
      print $out "set title '$prefix $alg tests on ".$cpuinfo{"model name"}."/".$mhz."'\n";

      foreach $driver (@drivers)
	{
	  my($file)="data/$prefix.$mhz.$alg.$driver.dat";
	  @alldrivers=(@alldrivers,$driver);

	  open(ALG, ">$file") || die "Can not open $file: $!\n";
	  
	  @bytes = (sort {$a <=> $b} keys %{ $rates{$alg}{$driver} } );
	  #print "Alg: $alg/$driver: ",join('/',@bytes),"\n";
	  
	  foreach $bytes (@bytes)
	    {
	      print ALG $bytes." ".$rates{$alg}{$driver}{$bytes}."\n";
	      #print "Alg: $alg/$driver/$bytes -> ".$rates{$alg}{$driver}{$bytes}."\n";
	    }
	  close(ALG);
	}
      
      print $out "plot ";
      $sep="";
      foreach $driver (@drivers) {
	my($file)="data/$prefix.$mhz.$alg.$driver.dat";
	print $out "$sep'$file' with linespoints title '$driver'";
	$sep=",";
      }
      print $out "\n";
    }

  foreach $driver (@alldrivers)
    {
      print $out "set terminal png\n";
      print $out "set output 'graph/$prefix.$mhz.$driver.png'\n";
      print $out "set xlabel 'request size'\n";
      print $out "set yrange [0:1024]\n";
      print $out "set ylabel 'megabits/sec'\n";
      print $out "set title '$prefix $driver tests on ".$cpuinfo{"model name"}."/".$mhz."'\n";

      print $out "plot ";
      $sep="";
      foreach $alg (sort keys %rates)
	{
	  my($file)="data/$prefix.$mhz.$alg.$driver.dat";
	  if(-f $file) {
	    print $out "$sep'$file' with linespoints title '$alg'";
	    $sep=",";
	  }
	}
      print $out "\n";
    }

  close(GNUPLOT);

}

# Local Variables:
# mode: perl
# End Variables:
