parse_output 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  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|ETE)/;
  12. $res{$size}->{$who.$mode} = $1/1000 if /WC\(ms\): (\d+)/;
  13. }
  14. sub max3 {
  15. my $m = $_[0];
  16. $m = $_[1] if $_[1] > $m;
  17. $m = $_[2] if $_[2] > $m;
  18. $m;
  19. }
  20. print "|size|iters|online_secs|total_secs|online_secs_per_iter|total_secs_per_iter|\n";
  21. print "|----|-----|-----------|----------|--------------------|-------------------|\n";
  22. foreach $size (sort keys %res) {
  23. my $iters = $1 if $size =~ /\|(\d+)/;
  24. my $online = &max3($res{$size}->{'COnline Time'},
  25. $res{$size}->{'DOnline Time'},
  26. $res{$size}->{'EOnline Time'});
  27. my $total = &max3($res{$size}->{'CETE'},
  28. $res{$size}->{'DETE'},
  29. $res{$size}->{'EETE'});
  30. print "|$size|$online|$total|", $online/$iters, "|", $total/$iters, "|\n";
  31. }