25 #include "dbus-mempool.h"
26 #include "dbus-internals.h"
69 #define ELEMENT_PADDING 4
147 if (element_size < 8)
159 pool->
element_size = _DBUS_ALIGN_VALUE (element_size,
sizeof (
void *));
189 while (block !=
NULL)
211 #ifdef DBUS_BUILD_TESTS
212 if (_dbus_disable_mem_pools ())
246 if (_dbus_decrement_fail_alloc_counter ())
248 _dbus_verbose (
" FAILING mempool alloc\n");
274 #ifdef DBUS_BUILD_TESTS
288 #ifdef DBUS_BUILD_TESTS
295 saved_counter = _dbus_get_fail_alloc_counter ();
304 #ifdef DBUS_BUILD_TESTS
305 _dbus_set_fail_alloc_counter (saved_counter);
306 _dbus_assert (saved_counter == _dbus_get_fail_alloc_counter ());
340 #ifdef DBUS_BUILD_TESTS
341 if (_dbus_disable_mem_pools ())
351 while (block !=
NULL)
353 if (block->
elements == (
unsigned char*) element)
395 #ifdef DBUS_BUILD_TESTS
396 #include "dbus-test.h"
401 time_for_size (
int size)
407 #define FREE_ARRAY_SIZE 512
408 #define N_ITERATIONS FREE_ARRAY_SIZE * 512
409 void *to_free[FREE_ARRAY_SIZE];
412 _dbus_verbose (
"Timings for size %d\n", size);
414 _dbus_verbose (
" malloc\n");
420 while (i < N_ITERATIONS)
427 if (j == FREE_ARRAY_SIZE)
430 while (j < FREE_ARRAY_SIZE)
444 _dbus_verbose (
" created/destroyed %d elements in %g seconds\n",
445 N_ITERATIONS, (end - start) / (
double) CLOCKS_PER_SEC);
449 _dbus_verbose (
" mempools\n");
457 while (i < N_ITERATIONS)
464 if (j == FREE_ARRAY_SIZE)
467 while (j < FREE_ARRAY_SIZE)
483 _dbus_verbose (
" created/destroyed %d elements in %g seconds\n",
484 N_ITERATIONS, (end - start) / (
double) CLOCKS_PER_SEC);
486 _dbus_verbose (
" zeroed malloc\n");
492 while (i < N_ITERATIONS)
499 if (j == FREE_ARRAY_SIZE)
502 while (j < FREE_ARRAY_SIZE)
516 _dbus_verbose (
" created/destroyed %d elements in %g seconds\n",
517 N_ITERATIONS, (end - start) / (
double) CLOCKS_PER_SEC);
519 _dbus_verbose (
" zeroed mempools\n");
527 while (i < N_ITERATIONS)
534 if (j == FREE_ARRAY_SIZE)
537 while (j < FREE_ARRAY_SIZE)
553 _dbus_verbose (
" created/destroyed %d elements in %g seconds\n",
554 N_ITERATIONS, (end - start) / (
double) CLOCKS_PER_SEC);
563 _dbus_mem_pool_test (
void)
566 int element_sizes[] = { 4, 8, 16, 50, 124 };
571 time_for_size (element_sizes[i]);