Skip to content

Commit 7eafe2d

Browse files
committed
Add proxy pool to benchmark
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent f90821a commit 7eafe2d

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

benchmark/ubench.c

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99

1010
#include <umf/memory_pool.h>
11+
#include <umf/pools/pool_proxy.h>
1112
#include <umf/providers/provider_os_memory.h>
1213

1314
#ifdef UMF_BUILD_LIBUMF_POOL_DISJOINT
@@ -159,10 +160,7 @@ UBENCH_EX(simple, os_memory_provider) {
159160
}
160161
#endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
161162

162-
#if (defined UMF_BUILD_OS_MEMORY_PROVIDER) && \
163-
((defined UMF_BUILD_LIBUMF_POOL_DISJOINT) || \
164-
(defined UMF_BUILD_LIBUMF_POOL_JEMALLOC) || \
165-
(defined UMF_BUILD_LIBUMF_POOL_SCALABLE))
163+
#ifdef UMF_BUILD_OS_MEMORY_PROVIDER
166164

167165
static void *w_umfPoolMalloc(void *provider, size_t size, size_t alignment) {
168166
umf_memory_pool_handle_t hPool = (umf_memory_pool_handle_t)provider;
@@ -177,7 +175,41 @@ static void w_umfPoolFree(void *provider, void *ptr, size_t size) {
177175
exit(-1);
178176
}
179177
}
180-
#endif /* (defined UMF_BUILD_OS_MEMORY_PROVIDER) && ((defined UMF_BUILD_LIBUMF_POOL_DISJOINT) || (defined UMF_BUILD_LIBUMF_POOL_JEMALLOC) || (defined UMF_BUILD_LIBUMF_POOL_SCALABLE)) */
178+
179+
////////////////// PROXY POOL WITH OS MEMORY PROVIDER
180+
181+
UBENCH_EX(simple, proxy_pool_with_os_memory_provider) {
182+
alloc_t *array = alloc_array(N_ITERATIONS);
183+
184+
enum umf_result_t umf_result;
185+
umf_memory_provider_handle_t os_memory_provider = NULL;
186+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
187+
&UMF_OS_MEMORY_PROVIDER_PARAMS,
188+
&os_memory_provider);
189+
if (umf_result != UMF_RESULT_SUCCESS) {
190+
exit(-1);
191+
}
192+
193+
umf_memory_pool_handle_t proxy_pool;
194+
umf_result = umfPoolCreate(umfProxyPoolOps(), os_memory_provider, NULL, 0,
195+
&proxy_pool);
196+
if (umf_result != UMF_RESULT_SUCCESS) {
197+
exit(-1);
198+
}
199+
200+
do_benchmark(array, N_ITERATIONS, w_umfPoolMalloc, w_umfPoolFree,
201+
proxy_pool); // WARMUP
202+
203+
UBENCH_DO_BENCHMARK() {
204+
do_benchmark(array, N_ITERATIONS, w_umfPoolMalloc, w_umfPoolFree,
205+
proxy_pool);
206+
}
207+
208+
umfPoolDestroy(proxy_pool);
209+
umfMemoryProviderDestroy(os_memory_provider);
210+
free(array);
211+
}
212+
#endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
181213

182214
#if (defined UMF_BUILD_LIBUMF_POOL_DISJOINT) && \
183215
(defined UMF_BUILD_OS_MEMORY_PROVIDER)

0 commit comments

Comments
 (0)