1use lib 'lib'; 2use Graph; 3use Devel::Size qw(size total_size); 4 5my $N = 16384; 6 7my $fmt = "%5s %8s %9s\n"; 8my $fmr = "%5d %8d %9.1f\n"; 9 10printf $fmt, "V", "S", "S/N"; 11my $g0 = Graph->new; 12my $s0 = total_size($g0); 13printf $fmr, 0, $s0, 0; 14 15my $vr; 16for (my $n = 1; $n <= $N; $n *= 2) { 17 my $g0 = Graph->new; 18 $g0->add_vertex($_) for 1..$n; 19 my $s = total_size($g0); 20 $vr = ($s - $s0) / $n; 21 printf $fmr, $n, $s, $vr; 22} 23 24printf $fmt, "E", "S", "S/N"; 25my $g1 = Graph->new; 26printf $fmr, 0, $s0, 0; 27 28my $er; 29for (my $n = 1; $n <= $N; $n *= 2) { 30 my $g1 = Graph->new; 31 $g1->add_edge(0, $_) for 1..$n; 32 my $s = total_size($g1); 33 $er = ($s - $s0 - $n * $vr) / $n; 34 printf $fmr, $n, $s, $er; 35} 36 37printf "Vertices / MB = %8.1f\n", 1048576/$vr; 38printf "Edges / MB = %8.1f\n", 1048576/$er; 39