#!/usr/bin/perl use strict; my $size = 0; my $iters = 0; my $who = ''; my $mode = ''; my %res = (); my $offlinebytes = 0; my $netsetup = ''; while(<>) { if (/Network setup: (.*)/) { $netsetup = "$1 "; next; } ($size,$iters) = ($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; } if (/===== End /) { 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 "CircuitORAMOnln read $size $netsetup$online s\n"; print "CircuitORAMTotl read $size $netsetup$total s\n"; # Note that the java code reports bandwidth *per iteration* my $onlinekib = $res{$size}->{'onlbytes'} * $iters / 1024; my $totalkib = $res{$size}->{'totbytes'} * $iters / 1024; print "CircuitORAMOnln read $size $netsetup$onlinekib KiB\n"; print "CircuitORAMTotl read $size $netsetup$totalkib KiB\n"; undef $res{$size}; } } sub max3 { my $m = $_[0]; $m = $_[1] if $_[1] > $m; $m = $_[2] if $_[2] > $m; $m; }