Week 05 ~ 07 : 전산학 프로젝트/SW정글 Week 06 : Malloc Lab

[Malloc Lab] 6. 성능 개선을 위한 몇가지 최적화 (2)

정글러 2021. 12. 15. 18:49

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 방식을 구현한다면 약간 더 점수를 올릴 수 있을듯