Commit f13c23b7 authored by Michael Tremer's avatar Michael Tremer

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: default avatarMichael Tremer <michael.tremer@ipfire.org>
parent 8649c654
...@@ -31,7 +31,11 @@ struct loc_as_list { ...@@ -31,7 +31,11 @@ struct loc_as_list {
size_t size; 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", DEBUG(list->ctx, "Growing AS list %p by %zu to %zu\n",
list, size, list->elements_size + size); list, size, list->elements_size + size);
...@@ -124,7 +128,7 @@ LOC_EXPORT int loc_as_list_append( ...@@ -124,7 +128,7 @@ LOC_EXPORT int loc_as_list_append(
// Check if we have space left // Check if we have space left
if (list->size >= list->elements_size) { if (list->size >= list->elements_size) {
int r = loc_as_list_grow(list, 64); int r = loc_as_list_grow(list);
if (r) if (r)
return r; return r;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment