On 12 March 2015 at 21:15, Antony Polukhin
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
> as hook set 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