3. realloc 커스텀 (+5점)
기존의 realloc 함수는 bp의 위치와 기존, 새 size에 관계없이 새로 malloc을 실행 후 데이터를 복사하는 방식이었다. 하지만 realloc하려는 bp의 컨디션에 따라 무의미한 복사를 하지 않고도 재할당이 가능한 경우가 있어 이 경우 예외적으로 malloc을 재실행하지 않는다면, 새로 free되어 생기는 공간활용의 구멍도, malloc 실행에 쓰이는 연산력도 절약할 수 있다.
newsize가 oldsize보다 크지만 bp의 다음 블록이 그 차이를 채울만큼 큰 빈 블록인 경우, newsize가 oldsize보다 작아서 제자리에서 재할당이 가능한 경우의 두 케이스에 대해 각각의 상황에 맞는 예외적인 절차를 밟도록 구현했다.
Explicit 방식에 위의 몇가지 최적화를 거쳤더니 92점이 나왔다.
해보진 않았는데 아마 implicit의 Next fit 방식에 적용해도 80점대 후반 이상은 나올 것 같다.
여기에 유한개의 정적 개수 chain을 관리하는 segregated 방식을 구현한다면 약간 더 점수를 올릴 수 있을듯
'Week 05 ~ 07 : 전산학 프로젝트 > SW정글 Week 06 : Malloc Lab' 카테고리의 다른 글
[Malloc Lab] 7. 성능 개선을 위한 몇가지 최적화 (3) (Best fit) (0) | 2021.12.16 |
---|---|
[Malloc Lab] 5. 성능 개선을 위한 몇가지 최적화 (0) | 2021.12.15 |
[Malloc Lab] 4. Explicit, pointer 기록을 이용한 malloc 구현 (0) | 2021.12.14 |
[Malloc Lab] 3. Explicit, vector 기록을 이용한 malloc 구현 (0) | 2021.12.14 |
[Malloc Lab] 2. Implicit, Next fit을 이용한 malloc 구현 (0) | 2021.12.14 |