-
Notifications
You must be signed in to change notification settings - Fork 47
Description
Motivation
The Allocator
trait provides grow()
shrink()
and grow_zeroed()
but they are implemented naively - shink
for example allocates new memory, copies over bytes, and deallocates the old block of memory. realloc
can be implemented for the GlobalAlloc trait with grow()
and shrink()
under the hood.
Proposed Solution
Implement these traits in a more efficient way with the knowledge that wee_alloc
has. grow
for example, may be able to extend out the existing block of memory if the next cell is free. Maybe hide this behind a feature if it adds an appreciable amount of code bloat.
Would be helpful to have a benchmark here to see what the improvements are like. I imagine that things like pushing onto a vector in a loop ends up calling realloc
quite a bit as the vector grows.