From dcab9eb748bc092347c0f46565c9ff2c8933b06d Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 22 Dec 2024 16:22:39 -0500 Subject: Tweak array resizing policy --- stdlib/arrays.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'stdlib') diff --git a/stdlib/arrays.c b/stdlib/arrays.c index c8ee55bd..e5ffbfd4 100644 --- a/stdlib/arrays.c +++ b/stdlib/arrays.c @@ -64,7 +64,8 @@ public void Array$insert(Array_t *arr, const void *item, Int_t int_index, int64_ : GC_MALLOC((size_t)arr->free * (size_t)padded_item_size); arr->stride = padded_item_size; } else if (arr->free < 1 || arr->data_refcount != 0 || (int64_t)arr->stride != padded_item_size) { - arr->free = MIN(ARRAY_MAX_FREE_ENTRIES, MAX(8, arr->length/4)); + // Resize policy: +50% growth (clamped between 8 and ARRAY_MAX_FREE_ENTRIES) + arr->free = MIN(ARRAY_MAX_FREE_ENTRIES, MAX(8, arr->length)/2); void *copy = arr->atomic ? GC_MALLOC_ATOMIC((size_t)(arr->length + arr->free) * (size_t)padded_item_size) : GC_MALLOC((size_t)(arr->length + arr->free) * (size_t)padded_item_size); for (int64_t i = 0; i < index-1; i++) -- cgit v1.2.3