#include "Malloc.h" #ifdef _DEBUG #define N 1000 #else #define N 1000*1000 #endif byte randb[500]; CONSOLE_APP_MAIN { HeapTest(); return; IdMapBenchmark(); return; for(int i = 0; i < 500; i++) randb[i] = rand(); heap.Init(); // if(0) { { RTIMING("NewAlloc 1"); for(int i = 0; i < 10 * N; i++) { void *p1 = heap.Alloc(10); heap.Free(p1); } } { RTIMING("OldAlloc 1"); for(int i = 0; i < 10 * N; i++) { void *p1 = new byte[10]; delete[] p1; } } } { RTIMING("NewAlloc 2"); for(int i = 0; i < 10 * N; i++) { void *p1 = heap.Alloc(10); void *p2 = heap.Alloc(10); heap.Free(p1); heap.Free(p2); } } { RTIMING("OldAlloc 2"); for(int i = 0; i < 10 * N; i++) { void *p1 = new byte[10]; void *p2 = new byte[10]; delete[] p1; delete[] p2; } } // return; { RTIMING("NewAlloc 50"); for(int i = 0; i < N; i++) { void *p[50]; for(int i = 0; i < 50; i++) p[i] = heap.Alloc(10); for(int i = 0; i < 50; i++) heap.Free(p[i]); } } { RTIMING("OldAlloc 50"); for(int i = 0; i < N; i++) { void *p[50]; for(int i = 0; i < 50; i++) p[i] = new byte[10]; for(int i = 0; i < 50; i++) delete[] p[i]; } } LOG("=========="); { RTIMING("NewAlloc 500 rnd"); for(int i = 0; i < N / 10; i++) { void *p[500]; for(int i = 0; i < 500; i++) p[i] = heap.Alloc(randb[i]); for(int i = 0; i < 500; i++) heap.Free(p[i]); } } { RTIMING("OldAlloc 500 rnd"); for(int i = 0; i < N / 10; i++) { void *p[500]; for(int i = 0; i < 500; i++) p[i] = new byte[randb[i]]; for(int i = 0; i < 500; i++) delete[] p[i]; } } { RTIMING("NewAlloc 5000 rnd"); for(int i = 0; i < N / 100; i++) { void *p[5000]; for(int i = 0; i < 5000; i++) p[i] = heap.Alloc(randb[i]); for(int i = 0; i < 5000; i++) heap.Free(p[i]); } } { RTIMING("OldAlloc 5000 rnd"); for(int i = 0; i < N / 100; i++) { void *p[5000]; for(int i = 0; i < 5000; i++) p[i] = new byte[randb[i]]; for(int i = 0; i < 5000; i++) delete[] p[i]; } } }