On Tue, Nov 19, 2013 at 6:24 AM, Ben Noordhuis <[email protected]> wrote:

> On Mon, Nov 18, 2013 at 9:56 PM, Aaron Boxer <[email protected]> wrote:
> > is it possible to use a fixed buffer for reads, instead of alloc being
> > called for each read?
> >
> > So, say I specify a 65532 byte buffer, can I tell libuv to use this
> buffer
> > repeatedly, and if there is more data than can fit, to just call the
> > callback again?
> >
> > Thanks,
> > Aaron
>
> That works on Unices (though it's best considered an implementation
> detail) and will usually work on Windows.  uv-win uses native
> completion-based I/O, which means it's possible for allocation
> lifetimes to overlap.
>
> In node.js, we exploited* the 'mostly non-overlapping' fact by having
> a slab allocator that uses bump allocation.  If buf->base + buf->len
> == slab->top in the read callback, then it's safe to release the
> memory with slab->top -= buf->len.  If the bump pointer has moved,
> then leave it to the garbage collector to reclaim the memory.
>
> More advanced schemes are certainly possible but the slab allocator
> had the advantages of being easy to understand and fast in the common
> case.
>
> * We now use something else but not because of issues with the slab
> allocator.
>


 Good to know, thanks. I don't think I need anything that sophisticated.

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to