parse_output 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. # Note that the java code already reports bandwidth *per
  25. # iteration*
  26. my $onlinebytes = $1;
  27. my $totbytes = $onlinebytes + $offlinebytes;
  28. $res{$size}->{'onlbytes'} = 0 unless
  29. defined $res{$size}->{'onlbytes'};
  30. $res{$size}->{'totbytes'} = 0 unless
  31. defined $res{$size}->{'totbytes'};
  32. $res{$size}->{'onlbytes'} += $onlinebytes;
  33. $res{$size}->{'totbytes'} += $totbytes;
  34. }
  35. }
  36. sub max3 {
  37. my $m = $_[0];
  38. $m = $_[1] if $_[1] > $m;
  39. $m = $_[2] if $_[2] > $m;
  40. $m;
  41. }
  42. print "|size|iters|online_secs|total_secs|online_secs_per_iter|total_secs_per_iter|\n";
  43. print "|----|-----|-----------|----------|--------------------|-------------------|\n";
  44. foreach $size (sort keys %res) {
  45. my $iters = $1 if $size =~ /\|(\d+)/;
  46. my $online = &max3($res{$size}->{'COnline Time'},
  47. $res{$size}->{'DOnline Time'},
  48. $res{$size}->{'EOnline Time'});
  49. my $total = &max3($res{$size}->{'CETE'},
  50. $res{$size}->{'DETE'},
  51. $res{$size}->{'EETE'});
  52. print "|$size|$online|$total|", $online/$iters, "|", $total/$iters, "|\n";
  53. }
  54. print "\n";
  55. print "|size|iters|online_3P_bytes_per_iter|total_3P_bytes_per_iter|\n";
  56. print "|----|-----|------------------------|-----------------------|\n";
  57. foreach $size (sort keys %res) {
  58. my $iters = $1 if $size =~ /\|(\d+)/;
  59. my $online = $res{$size}->{'onlbytes'};
  60. my $total = $res{$size}->{'totbytes'};
  61. print "|$size|$online|$total|\n";
  62. }