The problem with RedBlackTree is that it's cache-unfriendly due to the memory allocation and per-node pointers. One reason quicksort performs so well is because it works in-place, and the partition operation accesses elements bilinearly (i.e., two linear traversals over the same stretch of memory interleaved with each other), so it's very likely that most of the accesses will hit the cache (possibly even all, if hardware prefetching is present). Whereas with RedBlackTree, it's jumping all over memory, so there will be a higher rate of cache misses and the resulting slow RAM fetches. Plus, memory allocation is slooow, and is
best avoided where possible.

In an interview Stepanov said he would have used b* trees instead for this reason if he were writing STL today.

Here is a (dated) benchmark comparison of hash libraries:
https://attractivechaos.wordpress.com/2008/08/28/comparison-of-hash-table-libraries/

Reply via email to