Hi Trustin,

Thanks, I'll definitely be trying that out today!  As for the grow size, I 
don't know that it's necessary at all, I was probably describing my problem too 
deeply ;-)  If I do feel I need it, I'll definitely contribute something, but 
for now the interface is fine barring this defect.  I'll give it a try and let 
you know.

Cheers,
Craig

> -----Original Message-----
> From: 이희승 (Trustin Lee) [mailto:[EMAIL PROTECTED]
> Sent: Sunday, March 16, 2008 10:22 PM
> To: [email protected]
> Subject: Re: IoBuffer and auto expand
> 
> Hi Craig,
> 
> Thanks for reporting a bug.  I've just fixed it.  Please give
> 2.0.0-M2-SNAPSHOT a try.
> 
> I'm not sure growSize parameter will be meaningful in most cases.  You
> could come up with some patch if you are interested in implementing such a
> feature.  I'd suggest expansionRate (float, default = 2.0) property in
> IoBuffer.
> 
> Please also note that you can manually expand the buffer by calling
> IoBuffer.expand(...) method.
> 
> HTH,
> 
> On Fri, 14 Mar 2008 04:41:12 +0900, Craig L. Ching <[EMAIL PROTECTED]>
> wrote:
> 
> > Hi,
> >
> > I've changed over to using the latest milestone release, 2.0.0-M1 and I
> > have a question about IoBuffer.autoExpand(true).  I'm basically doing
> > the following:
> >
> > IoBuffer buf = IoBuffer.allocate(1024);
> > buf.setAutoExpand(true);
> >
> > [various buf.putXXX calls]
> >
> > buf.flip();
> >
> > [write buffer]
> >
> > I note that the documentation for autoExpand(true) says this:
> >
> > "The underlying ByteBuffer is reallocated by IoBuffer behind the scene
> > if the encoded data is larger than 16 bytes in the example above. Its
> > capacity will double, and its limit will increase to the last position
> > the string is written."
> >
> > For most of my usage, a small buffer is all I need.  However, there are
> > specific instances where that IoBuffer will need to grow to 1MB+.  The
> > problem I'm having is that when it needs to grow, it appears to be
> > growing very slowly, contrary to what the documentation says.  For
> > instance, I printed out IoBuffer.capacity() at various points and see
> > this:
> >
> > Capacity: 892736
> > Capacity: 892958
> > Capacity: 893070
> > Capacity: 893292
> > Capacity: 893410
> > Capacity: 893632
> >
> > Which tells me that it's growing very slowly which jibes with how I'm
> > seeing the machine behave (using 100% CPU for a few minutes).  Not only
> > that, but we had the same problem with our own buffers (coincidentally
> > named IoBuffer about 10 years ago, feels like I'm right at home :-P )
> > and we implemented basically the algorithm you have (double the
> > capacity), but we also allowed the user to specify how to grow the
> > buffer (a simple "growSize" parameter).  The point of this latter
> > comment is that we had the same behavior I'm seeing with MINA's
> > IoBuffers before we fixed our growth algorithms.
> >
> > I haven't gotten down into the MINA code yet, I just wanted to see if
> > anyone had any obvious comments on what I might be doing wrong.
> >
> > BTW, thanks for MINA, I was going to write something equivalent to it
> > for our own products, but I was very, very happy to see someone else
> > doing it and saving me quite a bit of time ;-)
> >
> > Cheers,
> > Craig
> 
> 
> 
> --
> Trustin Lee - Principal Software Engineer, JBoss, Red Hat
> --
> what we call human nature is actually human habit
> --
> http://gleamynode.net/

Reply via email to