From 54296ba6e4a3e40e5aab2226c6913ee93988f8ae Mon Sep 17 00:00:00 2001 From: MuhammedRijnas Date: Mon, 20 Jun 2022 16:14:18 +0530 Subject: [PATCH] chunk_list_find function perfomance incremented Uses binary search to find chunks --- heap.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/heap.c b/heap.c index a0fc33a..a912698 100644 --- a/heap.c +++ b/heap.c @@ -67,12 +67,19 @@ void chunk_list_dump(const Chunk_List *list, const char *name) } } +// Uses binary search to find chunks int chunk_list_find(const Chunk_List *list, uintptr_t *ptr) { - for (size_t i = 0; i < list->count; ++i) { - if (list->chunks[i].start == ptr) { - return (int) i; - } + int l = 0, r = list->count; // left and right + int mid = l + (r - l) / 2; + while(mid >= l && mid <= r){ + if(list->chunks[mid].start > ptr) + r = mid - 1; + else if(list->chunks[mid].start < ptr) + l = mid + 1; + else + return (int) mid; + mid = l + (r - l) / 2; } return -1;