#!/usr/bin/perl use strict; my $size = 0; my $who = ''; my $mode = ''; my %res = (); my $offlinebytes = 0; my $netsetup = ''; while(<>) { if (/Network setup: (.*)/) { $netsetup = "$1 "; next; } $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 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; } 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 "CircuitORAMOnline read $size $netsetup$online s\n"; print "CircuitORAMTotal read $size $netsetup$total s\n"; } print "\n"; foreach $size (sort keys %res) { # Note that the java code reports bandwidth *per iteration* my $iters = $1 if $size =~ /\|(\d+)/; my $online = $res{$size}->{'onlbytes'} * $iters; my $total = $res{$size}->{'totbytes'} * $iters; print "CircuitORAMOnline read $size $netsetup$online KiB\n"; print "CircuitORAMTotal read $size $netsetup$total KiB\n"; }