On Fri, 16 Feb 2001, Michael Davis wrote: > I have provided a small ruby script to test Marshal dump and how efficient > it is. It Marshal.dumps 10000 arrays and then Marhsal.loads them back in. > The problem is that it only reads 9895 rows. Is this a bug? Can someone > tell me where 105 of my rows went? They're probably lurking in the writing file's buffer. Try adding an fp.close, it worked for me. > print "\nTime test (using Marshal dump on Array):\n" > fp = File.new("Membership.dmp", "w+") > t = Time.now > rows = 0 > 1.upto(10000) do |i| > data = [i, 'Davis', 'Michael', 0] > Marshal.dump(data, fp) > rows += 1 > end fp.close > print " It took #{Time.now - t} seconds to insert ", rows, " > rows\n" > t = Time.now > count = 0 > rows = 0 > fp2 = File.new("Membership.dmp", "r+") > begin > 1.upto(10000) do |i| > data = Marshal.load(fp2) > count += 1 if (data[0] > 9000) > rows += 1 > end > rescue # we want to trap all errors and report them without > failing > print " - ", $!, "\n" > end > print " It took #{Time.now - t} seconds to count the rows > (#{rows})\n" [mike@ratdog tmp]$ ruby marsh.rb Time test (using Marshal dump on Array): It took 0.2925 seconds to insert 10000 rows It took 0.399407 seconds to count the rows (10000) Hope this helps, Mike -- mike / stok.co.uk | The "`Stok' disclaimers" apply. http://www.stok.co.uk/~mike/ | GPG PGP Key 1024D/059913DA | Fingerprint 0570 71CD 6790 7C28 3D60 stok / colltech.com (CT - work) | 75D2 9EC4 C1C0 0599 13DA