void jemallocTest(){ void *p; #ifdef WIN32 // If you use jemalloc through the static lib, // must be manual initialize jemalloc first. je_init(); #endif p = je_malloc(128); if (p) { printf("malloc(%u) result ptr = 0x%016" PRIXPTR "\n\n", 128, (unsigned long)p); je_free(p); } p = je_malloc(256); if (p) { printf("malloc(%u) result ptr = 0x%016" PRIXPTR "\n\n", 256, (unsigned long)p); je_free(p); } #ifdef WIN32 // Unload the jemalloc je_uninit(); #endif }
je_malloc_test::je_malloc_test( size_types size_type_, alloc_ways alloc_way_, int min_alloc_size_, int max_alloc_size_, int loop_count1_, int loop_count2_ /*= 0*/, int loop_count3_ /*= 0*/ ) : mem_pool_test(size_type_, alloc_way_, min_alloc_size_, max_alloc_size_, loop_count1_, loop_count2_, loop_count3_) { je_init(); }
void Memory_Pool_Test_C() { int i; #ifdef _DEBUG const int nMaxLoop = 100000; const int nMaxAlloc = 16384; #else const int nMaxLoop = 1000000; const int nMaxAlloc = 16384; //const int nMaxAlloc = 10000; #endif unsigned int dwUsedTime1, dwUsedTime2; unsigned int dwStartTickCount = GetTickCount(); for (i = 0; i < nMaxLoop; i++) { char *p = (char *)malloc((i % nMaxAlloc) + 1); if (p) free(p); } dwUsedTime1 = GetTickCount() - dwStartTickCount; mem_pool_printf("Alloc Func : malloc() Alloc Size: 1-%d\n", nMaxAlloc); mem_pool_printf("Alloc Count: %d\n", nMaxLoop); mem_pool_printf("Total Cost : %d ms.\n", dwUsedTime1); //system("pause"); mem_pool_printf("\n"); set_errno(0); je_init(); dwStartTickCount = GetTickCount(); for (i = 0; i < nMaxLoop; i++) { void *p = je_malloc((i % nMaxAlloc) + 1); if (p) je_free(p); } je_uninit(); dwUsedTime2 = GetTickCount() - dwStartTickCount; mem_pool_printf("Alloc Func : je_malloc() Alloc Size: 1-%d\n", nMaxAlloc); mem_pool_printf("Alloc Count: %d\n", nMaxLoop); mem_pool_printf("Total Cost : %d ms.\t Speed up: %0.2f %%\n", dwUsedTime2, ((double)(dwUsedTime1 * 10000 / dwUsedTime2) / 100.0)); //system("pause"); //mem_pool_printf("\n"); }
je_malloc_test::je_malloc_test() : mem_pool_test() { je_init(); }