class Holder
  def initialize(num)
    @num = num
  end
end

def start
  @t0 = Time.now.to_f
end

def elapsed
  Time.now.to_f - @t0
end
  
puts "record size\trecords written\tbytes per record\trecords per sec\tintegers per sec"
n=1
while n < 50000 do
  f = File.new("rbtmp.tmp", "w")
  f.sync=true
  sleep 5

  d = Array.new
  0.upto(n) do |x|
    d[x] = Holder.new(rand x)
  end

  start
  i = 0
  while (i < 1000 && elapsed < 10) do
    Marshal.dump(d,f)
    f.fsync  
    i+=1
  end

  t = elapsed
  fl = f.stat.size
  f.close
  puts "#{n}\t#{i}\t#{fl/i.to_f}\t#{i/t}\t#{n*i/t}"
  n = (1.2*n+1).to_i
end 
