Example #1
0
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();
}