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 {
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;
}
......
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