On Fri, 16 Feb 2001, Hugh Sasse Staff Elec Eng wrote:

> On Fri, 16 Feb 2001, Mike Stok wrote:
>
> > On Fri, 16 Feb 2001, Michael Davis wrote:
> >
> > >  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.
> >
> File.open() can be followed by a block, which is useful because the close
> is done for you. It keeps you code well structured, too.
> 	Hugh

... so the writing part of the code could look like:

         # make sure t and rows are available later

         t = Time.now
         rows = 0

         # constructing data outside of the loop saves some time...

         data = [nil, 'Davis', 'Michael', 0]

         File.open("Membership.dmp", "w+") do |fp|
            1.upto(100000) do |i|
               data[0] = i
               Marshal.dump(data, fp)
               rows += 1
            end
         end

         print "  It took #{Time.now - t} seconds to insert ", rows, " rows\n"

and the original poster could adjust the second chunk similarly.  I was
surprised that moving the "construction" of data out of the loop saved
as much as 10% of the reported time in the writing loop.

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