malloc/free를 사용하는 것보다 (아마도) 빠른 메모리 할당기를 작성했습니다. 이 코드를 테스트하기 위해 적은 양의 코드를 작성했지만 이것이 메모리 할당자를 프로파일 링하는 올바른 방법인지 확실하지 않습니다. 아무도 저에게 조언을 해줄 수 있습니까?올바른 메모리 할당 자 프로파일 방법
이 코드의 출력은 다음과 같습니다
Mem_Alloc: 0.020000s
malloc: 3.869000s
difference: 3.849000s
Mem_Alloc is 193.449997 times faster.
이
코드입니다 :int i;
int mem_alloc_time, malloc_time;
float mem_alloc_time_float, malloc_time_float, times_faster;
unsigned prev;
// Test Mem_Alloc
timeBeginPeriod (1);
mem_alloc_time = timeGetTime();
for (i = 0; i < 100000; i++) {
void *p = Mem_Alloc (100000);
Mem_Free (p);
}
// Get the duration
mem_alloc_time = timeGetTime() - mem_alloc_time;
// Test malloc
prev = mem_alloc_time; // For getting the difference between the two times
malloc_time = timeGetTime();
for (i = 0; i < 100000; i++) {
void *p = malloc (100000);
free (p);
}
// Get the duration
malloc_time = timeGetTime() - malloc_time;
timeEndPeriod (1);
// Convert both times to seconds
mem_alloc_time_float = (float)mem_alloc_time/1000.0f;
malloc_time_float = (float)malloc_time/1000.0f;
// Print the results
printf ("Mem_Alloc: %fs\n", mem_alloc_time_float);
printf ("malloc: %fs\n", malloc_time_float);
if (mem_alloc_time_float > malloc_time_float) {
printf ("difference: %fs\n", mem_alloc_time_float - malloc_time_float);
} else {
printf ("difference: %fs\n", malloc_time_float - mem_alloc_time_float);
}
times_faster = (float)max(mem_alloc_time_float, malloc_time_float)/
(float)min(mem_alloc_time_float, malloc_time_float);
printf ("Mem_Alloc is %f times faster.\n", times_faster);
'timeGetTime()'의 기능은 무엇입니까? – steffen
http://msdn.microsoft.com/en-us/library/windows/desktop/dd757629(v=vs.85).aspx –