1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 14:59:05 +00:00

Slab allocator changes

If the first slab in the list of slabs which share the same chunk size has no more room, it means that all other slabs following it have no room either. This speeds up the test to find a slab with free space, which can now abort and directly proceed to allocate memory for a new slab.

If an empty slab's decay count hits zero, it is moved to the front of the empty slab list to be reclaimed more quickly.

Allocations made from the slab now carry a pointer back to the slab which they are a part of. This speeds up deallocation but has the downside of making the smallest usable slab chunk size 64 bytes, which is double what used to be the minimum before.
This commit is contained in:
Olaf Barthel
2016-11-22 11:07:38 +01:00
parent 1ea8953bd3
commit 0c5b88d2d3
23 changed files with 287 additions and 128 deletions

View File

@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 209
#define DATE "21.11.2016"
#define VERS "debug.lib 1.209"
#define VSTRING "debug.lib 1.209 (21.11.2016)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.209 (21.11.2016)"
#define REVISION 210
#define DATE "22.11.2016"
#define VERS "debug.lib 1.210"
#define VSTRING "debug.lib 1.210 (22.11.2016)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.210 (22.11.2016)"