CubicRootResizing
Short summary
This resizing strategy increases an capacity by a geometric factor of the cubic root of 2 (~1.26). After three consecutive growth steps, the capacity approximately doubles, which improves the chance of reusing previously freed memory blocks and helps to reduce heap fragmentation. The strategy is well-suited for memory-constrained or embedded environments where efficient memory reuse is more important than minimizing the number of reallocation operations. For downsizing the capacity is reduced if the new size is less then 25 % of the current capacity.
| Access | Abstract | Final | Extends | Implements |
|---|---|---|---|---|
| - | No | No | CNM_AbstractObject.Object | CNM_CollectionInterfaces.IResizingStrategy |
UML Diagram
Parameters
none
Properties
className
Type: CNM_AbstractObject.ClassName
This abstract property returns the class name of the concrete object, …
initialSize
Type: UDINT
This property returns an inital size for an empty new array.…
Methods
getDownscaledCapacity
- Parameters:
requestedSize(UDINT): the new size that is neededcurrentCapacity(UDINT): the current actual size of the container
- Return type:
BOOL
The method takes the requested size and the current capacity as input and determines the next suitable capacity value based on the implemented resizing strategy.…
getUpscaledCapacity
- Parameters:
requestedSize(UDINT): the new size that is neededcurrentCapacity(UDINT): the current actual size of the container
- Return type:
BOOL
The method takes the requested size and the current capacity as input and determines the next suitable capacity value based on the implemented resizing strategy.…
Code
Declaration
{attribute 'enable_dynamic_creation'}
FUNCTION_BLOCK CubicRootResizing EXTENDS CNM_AbstractObject.Object IMPLEMENTS CNM_CollectionInterfaces.IResizingStrategy
VAR CONSTANT
(* cubic root of 2 *)
GROW_FACTOR :REAL := 1.259921049894873165;
END_VAR