8
8
*/
9
9
10
10
#include <umf/memory_pool.h>
11
+ #include <umf/pools/pool_proxy.h>
11
12
#include <umf/providers/provider_os_memory.h>
12
13
13
14
#ifdef UMF_BUILD_LIBUMF_POOL_DISJOINT
@@ -157,12 +158,6 @@ UBENCH_EX(simple, os_memory_provider) {
157
158
umfMemoryProviderDestroy (os_memory_provider );
158
159
free (array );
159
160
}
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 ))
166
161
167
162
static void * w_umfPoolMalloc (void * provider , size_t size , size_t alignment ) {
168
163
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) {
177
172
exit (-1 );
178
173
}
179
174
}
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 */
181
211
182
212
#if (defined UMF_BUILD_LIBUMF_POOL_DISJOINT ) && \
183
213
(defined UMF_BUILD_OS_MEMORY_PROVIDER )
0 commit comments