
On 12 March 2015 at 21:15, Antony Polukhin <antoshkka@gmail.com> wrote:
O2 and O3 are the main cases. Good performance on O1 and O0 is not essential.
I've took a look into std::map implementation in GCC 4.8. Helper data in node of a map consumes same or bigger amount of memory, as intrusive::set_base_hook. std::map holds first node by value (it removes memory allocation for maps with size 1, which is a common case in our performance tests), that's why we did not get the x2 speedup when moved from std::map to intrusive.
Let's apply Ion's recommendations:
set_base_hook <optimize_size<true>, link_mode<normal_link> > as hook set<node_type, constant_time_size<false> > as children_type.
and measure the speed at O2.
Even with O2 and O3 std::map based container still performs slightly better. I can give you the results of running the benchmark on my PC. Cosmin