Skip to content

Commit 5876bdc

Browse files
authored
Merge pull request #198 from ldorau/Add_proxy_pool_to_benchmark
Add proxy pool to benchmark
2 parents e9c9d9f + 6b787b9 commit 5876bdc

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

benchmark/ubench.c

Lines changed: 37 additions & 7 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
@@ -157,12 +158,6 @@ UBENCH_EX(simple, os_memory_provider) {
157158
umfMemoryProviderDestroy(os_memory_provider);
158159
free(array);
159160
}
160-
#endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
161-
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))
166161

167162
static void *w_umfPoolMalloc(void *provider, size_t size, size_t alignment) {
168163
umf_memory_pool_handle_t hPool = (umf_memory_pool_handle_t)provider;
@@ -177,7 +172,42 @@ static void w_umfPoolFree(void *provider, void *ptr, size_t size) {
177172
exit(-1);
178173
}
179174
}
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)) */
175+
176+
////////////////// PROXY POOL WITH OS MEMORY PROVIDER
177+
178+
UBENCH_EX(simple, proxy_pool_with_os_memory_provider) {
179+
alloc_t *array = alloc_array(N_ITERATIONS);
180+
181+
enum umf_result_t umf_result;
182+
umf_memory_provider_handle_t os_memory_provider = NULL;
183+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
184+
&UMF_OS_MEMORY_PROVIDER_PARAMS,
185+
&os_memory_provider);
186+
if (umf_result != UMF_RESULT_SUCCESS) {
187+
exit(-1);
188+
}
189+
190+
umf_memory_pool_handle_t proxy_pool;
191+
umf_result = umfPoolCreate(umfProxyPoolOps(), os_memory_provider, NULL, 0,
192+
&proxy_pool);
193+
if (umf_result != UMF_RESULT_SUCCESS) {
194+
exit(-1);
195+
}
196+
197+
do_benchmark(array, N_ITERATIONS, w_umfPoolMalloc, w_umfPoolFree,
198+
proxy_pool); // WARMUP
199+
200+
UBENCH_DO_BENCHMARK() {
201+
do_benchmark(array, N_ITERATIONS, w_umfPoolMalloc, w_umfPoolFree,
202+
proxy_pool);
203+
}
204+
205+
umfPoolDestroy(proxy_pool);
206+
umfMemoryProviderDestroy(os_memory_provider);
207+
free(array);
208+
}
209+
210+
#endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
181211

182212
#if (defined UMF_BUILD_LIBUMF_POOL_DISJOINT) && \
183213
(defined UMF_BUILD_OS_MEMORY_PROVIDER)

0 commit comments

Comments
 (0)