parse_output 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/perl
  2. use strict;
  3. my $size = 0;
  4. my $who = '';
  5. my $mode = '';
  6. my %res = ();
  7. my $offlinebytes = 0;
  8. while(<>) {
  9. $size = "$1|$2" if /===== Running oram (\d+) (\d+)/;
  10. $res{$size} = {} unless defined $res{$size};
  11. $who = $1 if /===== ([CDE]) output/;
  12. $mode = $1 if /(Online Time|Offline Time|ETE)/;
  13. if(/WC\(ms\): (\d+)/) {
  14. if (defined $res{$size}->{$who.$mode}) {
  15. print "Redefinition of res{$size}->{$who$mode}\n";
  16. } else {
  17. $res{$size}->{$who.$mode} = $1/1000
  18. }
  19. }
  20. if (/Total Offline Band\(bytes\): (\d+)/) {
  21. $offlinebytes = $1;
  22. }
  23. if (/Total Online Band\(bytes\): (\d+)/) {
  24. my $onlinebytes = $1;
  25. my $totbytes = $onlinebytes + $offlinebytes;
  26. $res{$size}->{'onlbytes'} = 0 unless
  27. defined $res{$size}->{'onlbytes'};
  28. $res{$size}->{'totbytes'} = 0 unless
  29. defined $res{$size}->{'totbytes'};
  30. $res{$size}->{'onlbytes'} += $onlinebytes;
  31. $res{$size}->{'totbytes'} += $totbytes;
  32. }
  33. }
  34. sub max3 {
  35. my $m = $_[0];
  36. $m = $_[1] if $_[1] > $m;
  37. $m = $_[2] if $_[2] > $m;
  38. $m;
  39. }
  40. print "|size|iters|online_secs|total_secs|online_secs_per_iter|total_secs_per_iter|\n";
  41. print "|----|-----|-----------|----------|--------------------|-------------------|\n";
  42. foreach $size (sort keys %res) {
  43. my $iters = $1 if $size =~ /\|(\d+)/;
  44. my $online = &max3($res{$size}->{'COnline Time'},
  45. $res{$size}->{'DOnline Time'},
  46. $res{$size}->{'EOnline Time'});
  47. my $total = &max3($res{$size}->{'CETE'},
  48. $res{$size}->{'DETE'},
  49. $res{$size}->{'EETE'});
  50. print "|$size|$online|$total|", $online/$iters, "|", $total/$iters, "|\n";
  51. }
  52. print "\n";
  53. print "|size|iters|online_3P_bytes|total_3P_bytes|online_3P_bytes_per_iter|total_3P_bytes_per_iter|\n";
  54. print "|----|-----|---------------|--------------|------------------------|-----------------------|\n";
  55. foreach $size (sort keys %res) {
  56. my $iters = $1 if $size =~ /\|(\d+)/;
  57. my $online = $res{$size}->{'onlbytes'};
  58. my $total = $res{$size}->{'totbytes'};
  59. print "|$size|$online|$total|", $online/$iters, "|", $total/$iters, "|\n";
  60. }