]> Kevux Git Server - fll/commit
Update: Greatly reduce memory consumption by implementing simple low allocation step.
authorKevin Day <Kevin@kevux.org>
Sun, 4 Aug 2024 06:15:14 +0000 (01:15 -0500)
committerKevin Day <Kevin@kevux.org>
Sun, 4 Aug 2024 21:47:23 +0000 (16:47 -0500)
commit6d51b974d10b77fd71f67c14cf5c5c769bfed78f
treef48afeb61d427c26960213bdc23f784013e4c280
parent8295c3c2eb074cb0d306b900d73d45ba56212b87
Update: Greatly reduce memory consumption by implementing simple low allocation step.

Historically the step was always 3.
I found, over time, that increasing the step greatly to something like 128 could greatly reduce memory consumption and performance in many cases.
In the situation where a large number of small objects are allocated then this number like 128 becomes highly abusive.

The simple low allocation step will only allocate a single unit on the very first allocation.
If the next allocation is on an array that has a size greater than one and less than four (via the tiny define), then the step size is set to four during allocation.
If the next allocation is on an array that has a size greater than four and less than eight (via the small define), then the step size is set to eight during allocation.
If the next allocation is on an array that has a size greater than eight and less than sixty-four (via the large define), then the step size is set to sixty-four during allocation.
In all cases, if the request step is less than the calculated step, then the requested step is used.
For example, if the requested step is twelve, then after eight is allocation, then the next generated step size is twelve rather than sixty-four.

Using some test files, shows the following reduction:
- Old: ~8GB of RAM -> New: ~200MB of RAM.
- Old: ~500MB of RAM -> New: ~20MB of RAM.

Update the unit tests accordingly and fix any problems exposed.
13 files changed:
build/stand_alone/byte_dump.config.h
build/stand_alone/example.config.h
build/stand_alone/fake.config.h
build/stand_alone/firewall.config.h
build/stand_alone/utf8.config.h
level_0/f_iki/tests/unit/c/test-iki-datass_append.c
level_0/f_memory/c/memory/array.c
level_0/f_memory/c/memory/common.h
level_0/f_memory/tests/unit/c/test-memory-array_increase.c
level_0/f_memory/tests/unit/c/test-memory-array_increase.h
level_0/f_memory/tests/unit/c/test-memory.c
level_1/fl_fss/c/fss/basic.c
level_1/fl_fss/tests/unit/c/help-fss-payload.c