parse_output 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/perl
  2. use strict;
  3. my $size = 0;
  4. my $who = '';
  5. my $mode = '';
  6. my %res = ();
  7. while(<>) {
  8. $size = "$1|$2" if /===== Running oram (\d+) (\d+)/;
  9. $res{$size} = {} unless defined $res{$size};
  10. $who = $1 if /===== ([CDE]) output/;
  11. $mode = $1 if /(Online Time|Offline Time|ETE)/;
  12. if(/WC\(ms\): (\d+)/) {
  13. if (defined $res{$size}->{$who.$mode}) {
  14. print "Redefinition of res{$size}->{$who$mode}\n";
  15. } else {
  16. $res{$size}->{$who.$mode} = $1/1000
  17. }
  18. }
  19. }
  20. sub max3 {
  21. my $m = $_[0];
  22. $m = $_[1] if $_[1] > $m;
  23. $m = $_[2] if $_[2] > $m;
  24. $m;
  25. }
  26. print "|size|iters|online_secs|total_secs|online_secs_per_iter|total_secs_per_iter|\n";
  27. print "|----|-----|-----------|----------|--------------------|-------------------|\n";
  28. foreach $size (sort keys %res) {
  29. my $iters = $1 if $size =~ /\|(\d+)/;
  30. my $online = &max3($res{$size}->{'COnline Time'},
  31. $res{$size}->{'DOnline Time'},
  32. $res{$size}->{'EOnline Time'});
  33. my $total = &max3($res{$size}->{'CETE'},
  34. $res{$size}->{'DETE'},
  35. $res{$size}->{'EETE'});
  36. print "|$size|$online|$total|", $online/$iters, "|", $total/$iters, "|\n";
  37. }