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