#! /usr/bin/perl $maxmem=1024 * 4; #===== print "exponential sized strategy\n"; $ss = 64; $ts = 0; $sumiteritem = 0; for ($i = 1 ; $ts < $maxmem ; $i++) { $ss = $ss * 2; if ($ts + $ss > $maxmem) { $ss = $maxmem - $ts; } $ts += $ss; $ntups = $ts*1024*1024 / 6; $ntupinseg = $ss*1024*1024 / 6; $npages = $ntups / 291; $tsize = $npages * 8192.0 / 1024 / 1024 / 1024; $sumiteritem += log($ntupinseg) * $ntupinseg; # weight by percentage in all tuples printf("#%d : segsize=%dMB total=%dMB, (tuples = %ld, min tsize=%.1fGB), iterseg(%d)=%f, iteritem(%d) = %f, expected iter=%f\n", $i, $ss, $ts, $ntups, $tsize, $i, log($i), $ntupinseg, log($ntupinseg), log($i) + $sumiteritem/$ntups); } print "\n\nfixed sized strategy\n"; $ss = 64; $ts = 0; for ($i = 1 ; $ts < $maxmem ; $i++) { $ts += $ss; $ntups = $ts*1024*1024 / 6; $ntupinseg = $ss*1024*1024 / 6; $npages = $ntups / 300; $tsize = $npages * 8192.0 / 1024 / 1024 / 1024; printf("#%d : segsize=%dMB total=%dMB, (tuples = %ld, min tsize=%.1fGB), interseg(%d)=%f, iteritem(%d) = %f, expected iter=%f\n", $i, $ss, $ts, $ntups, $tsize, $i, log($i), $ntupinseg, log($ntupinseg), log($i) + log($ntupinseg)); }