From 2e2806fb8471cbacc2ff933e3669d1257a520c2e Mon Sep 17 00:00:00 2001 From: DocQuantum <shchurgood@gmail.com> Date: Mon, 21 Oct 2019 00:15:34 -0500 Subject: [PATCH] Changed to next-fit algorithm, moving perf to 85% --- mm.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/mm.c b/mm.c index 85b88af..c460e19 100644 --- a/mm.c +++ b/mm.c @@ -641,16 +641,32 @@ static void *find_fit(size_t asize) return NULL; } - /* first fit search */ + /* Next fit search */ void *bp = free_listp; + void *bestP = bp; + void *first = NULL; + short flag = 0; do { - if (asize <= GET_SIZE(HDRP(bp))) { - return bp; - } - if((bp = GET_NEXT_FREE(bp)) == NULL){ - return NULL; + if (GET_SIZE(HDRP(bp)) >= asize) { + if(GET_SIZE(HDRP(bestP)) > GET_SIZE(HDRP(bp))){ + bestP = bp; + flag++; + } + if(!flag){ + first = bp; + flag = 1; + } + if(flag == 2){ + break; + } } + bp = GET_PREV_FREE(bp); } while(bp != free_listp); + if(asize <= GET_SIZE(HDRP(bestP))){ + return bestP; + } else if(first != NULL){ + return first; + } return NULL; /* no fit */ } -- GitLab