Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
2455 Discussions

std::map with tbb scalable allocator and tbbmalloc_proxy


While profiling my application I found that a lot of time was being spent on the memory allocation and deallocation so I switched to tbb scalable allocator which helped a lot. I have not explicitly changed the code to allocate the memory through scalable allocator but I am linking my application with library which is doing its job.  But still, the profiling tool shows some red areas where I am inserting some data into a map.
So my questing is that, do I need to explicitly define custom memory allocator for map e.g

std::map<const key,T,scalable_allocator<std::pair<const Key, T>> 

or just linking to the library will do the job?


0 Kudos
1 Reply


You are using it right. Linking to library will substitute all standard allocation routines to tbb ones, and that is enough. However, I recommend to try LD_PRELOAD option as described here. It just ensures that symbols for malloc/free will be loaded firstly.

On the other hand, you can try one of our concurrent containers, if you faced insertion bottleneck.

- Nikita

0 Kudos