From 31eac7e4dec9dea0c467fe87324ea6a5a21a6775 Mon Sep 17 00:00:00 2001 From: Matthew Sotoudeh Date: Fri, 17 May 2024 13:57:50 -0700 Subject: update readme --- README | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/README b/README index 0717846..6e2ba19 100644 --- a/README +++ b/README @@ -2,20 +2,31 @@ A buddy allocator with zero metadata overhead. -Benefits are: +Benefits over buddy allocators that store a free-or-not bit on the block: - 1. Very good use of space compared to traditional buddy allocators, - especially if you are frequently requesting power-of-two allocations. + 1. When you request an allocation of 2^k, it only allocates 2^k space, not + 2^{k+1} to account for the extra free-or-not-bit. - 2. Still constant-time allocation and liberation. +Benefits over buddy allocators that store a bitset: - 3. The library is small, simple, and convenient to use. It even supports + 1. You save at least a few MB in metadata, or more if you're allocating + huge amounts of space. + + 2. Comparably simple implementation; only ~250 loc, and there is no need to + track a metadata region. + +Features of the allocator shared with other buddy allocators include: + + 1. All operations are constant time/linear only in the number of address + bits. + + 2. The library is small, simple, and convenient to use. It even supports unaligned base addresses. - 4. Support for realloc and reserving subregions (e.g., device MMIO + 3. Support for realloc and reserving subregions (e.g., device MMIO addresses). - 5. Core functionality is reasonably well-tested with an exhaustive + 4. Core functionality is reasonably well-tested with an exhaustive implementation model checker. Caveats are: -- cgit v1.2.3