Skip to content

Make a slab allocator for general string allocation #12

@Ed94

Description

@Ed94

All strings that are not cached for AST name or content fields are just dumped into the global allocator.
The global allocator itself is just array of arenas (buckets). There is no reuse of any allocated memory there.

Slab classes (for 100 mb arena)

1KB   slab: 5MB  ( 5MB  / 1KB   ~ 5,000 blocks )
4KB   slab: 10MB ( 10MB / 4KB   ~ 2,500 blocks )
16KB  slab: 15MB ( 15MB / 16KB  ~ 960 blocks   )
64KB  slab: 15MB ( 15MB / 64KB  ~ 240 blocks   )
256KB slab: 20MB ( 20MB / 256KB ~ 80 blocks    )
512KB slab: 20MB ( 20MB / 512KB ~ 40 blocks    )
1MB   slab: 15MB ( 15MB / 1MB   ~ 15 blocks    )

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceAnything related to bad performance issue or a beneficial optimization

    Projects

    Status

    Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions