Skip to content

Implement more efficient grow/shrink/realloc methods #98

@rusty122

Description

@rusty122

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions