From: Michael Tremer Date: Wed, 9 Mar 2022 10:15:49 +0000 (+0000) Subject: as-list: Grow faster to avoid too many re-allocations X-Git-Tag: 0.9.12~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f13c23b76640abfa8e5066ed148fd8a60bce861c;p=location%2Flibloc.git as-list: Grow faster to avoid too many re-allocations When we add a large number of ASes to the list, we will constantly re-allocate the whole list because we are only growing it by 64 entries at a time. This patch changes that we will double the list in size every time we run out of space and we will start with 1024 elements. Signed-off-by: Michael Tremer --- diff --git a/src/as-list.c b/src/as-list.c index 820357c..26fe9fb 100644 --- a/src/as-list.c +++ b/src/as-list.c @@ -31,7 +31,11 @@ struct loc_as_list { size_t size; }; -static int loc_as_list_grow(struct loc_as_list* list, size_t size) { +static int loc_as_list_grow(struct loc_as_list* list) { + size_t size = list->elements_size * 2; + if (size < 1024) + size = 1024; + DEBUG(list->ctx, "Growing AS list %p by %zu to %zu\n", list, size, list->elements_size + size); @@ -124,7 +128,7 @@ LOC_EXPORT int loc_as_list_append( // Check if we have space left if (list->size >= list->elements_size) { - int r = loc_as_list_grow(list, 64); + int r = loc_as_list_grow(list); if (r) return r; }