Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
32 Views

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 tbbmalloc_proxy.so 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 tbbmalloc_proxy.so library will do the job?

 

0 Kudos
1 Reply
Highlighted
Employee
32 Views

Hi,

You are using it right. Linking to tbbmalloc_proxy.so 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 tbbmalloc_proxy.so 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