Win32API【2】
■ このスレッドは過去ログ倉庫に格納されています
0542511
NGNG#include <windows.h>
#include <stdio.h>
const int COUNT = 1000;
int main()
{
HANDLE hHeap = GetProcessHeap();
char* buff;
unsigned int start, heap1 = 0, heap2 = 0, crt = 0;
int i, j;
for (j = 0; j < 100000; j++) {
start = timeGetTime();
for (i = 0; i < COUNT; i++) {
buff = HeapAlloc(hHeap, 0, 100);
HeapFree(hHeap, 0, buff);
}
heap1 += timeGetTime() - start;
start = timeGetTime();
for (i = 0; i < COUNT; i++) {
buff = HeapAlloc(hHeap, HEAP_NO_SERIALIZE, 100);
HeapFree(hHeap, HEAP_NO_SERIALIZE, buff);
}
heap2 += timeGetTime() - start;
start = timeGetTime();
for (i = 0; i < COUNT; i++) {
buff = malloc(100);
free(buff);
}
crt += timeGetTime() - start;
}
printf(" heap1: %d\n heap2: %d\n crt: %d\n", heap1, heap2, crt);
return 0;
}
結果:
heap1: 27816
heap2: 29181
crt: 14736
結局malloc()よりHeapAlloc()の方が約1.9倍遅かったです。
謎なのはHEAP_NO_SERIALIZEをつけた方が遅いって事なんですが。。。ううむ
■ このスレッドは過去ログ倉庫に格納されています