#!/usr/bin/perl use strict; my $size = 0; my $who = ''; my $mode = ''; my %res = (); my $offlinebytes = 0; while(<>) { $size = "$1|$2" if /===== Running oram (\d+) (\d+)/; $res{$size} = {} unless defined $res{$size}; $who = $1 if /===== ([CDE]) output/; $mode = $1 if /(Online Time|Offline Time|ETE)/; if(/WC\(ms\): (\d+)/) { if (defined $res{$size}->{$who.$mode}) { print "Redefinition of res{$size}->{$who$mode}\n"; } else { $res{$size}->{$who.$mode} = $1/1000 } } if (/Total Offline Band\(bytes\): (\d+)/) { $offlinebytes = $1; } if (/Total Online Band\(bytes\): (\d+)/) { # Note that the java code already reports bandwidth *per # iteration* my $onlinebytes = $1; my $totbytes = $onlinebytes + $offlinebytes; $res{$size}->{'onlbytes'} = 0 unless defined $res{$size}->{'onlbytes'}; $res{$size}->{'totbytes'} = 0 unless defined $res{$size}->{'totbytes'}; $res{$size}->{'onlbytes'} += $onlinebytes; $res{$size}->{'totbytes'} += $totbytes; } } sub max3 { my $m = $_[0]; $m = $_[1] if $_[1] > $m; $m = $_[2] if $_[2] > $m; $m; } print "|size|iters|online_secs|total_secs|online_secs_per_iter|total_secs_per_iter|\n"; print "|----|-----|-----------|----------|--------------------|-------------------|\n"; foreach $size (sort keys %res) { my $iters = $1 if $size =~ /\|(\d+)/; my $online = &max3($res{$size}->{'COnline Time'}, $res{$size}->{'DOnline Time'}, $res{$size}->{'EOnline Time'}); my $total = &max3($res{$size}->{'CETE'}, $res{$size}->{'DETE'}, $res{$size}->{'EETE'}); print "|$size|$online|$total|", $online/$iters, "|", $total/$iters, "|\n"; } print "\n"; print "|size|iters|online_3P_bytes_per_iter|total_3P_bytes_per_iter|\n"; print "|----|-----|------------------------|-----------------------|\n"; foreach $size (sort keys %res) { my $iters = $1 if $size =~ /\|(\d+)/; my $online = $res{$size}->{'onlbytes'}; my $total = $res{$size}->{'totbytes'}; print "|$size|$online|$total|\n"; }