
[Kai Schroeder]
I have found that this behaviour of boost hash is described in the documentation: http://www.boost.org/doc/libs/1_48_0/doc/html/hash/rationale.html
So, this is by design. This rationale is understandable, however it can lead to difficult to find performance problems as in our case. Btw.: std::hash in MSVC10 does not show this behaviour. Well, I tend to agree that this is a bug in TBB, still I would personally prefer a better hash function (even if it is a bit slower) by default. Maybe a fast_hash option could be provided as an alternative.
In VC11, we've reimplemented std::hash. We now use FNV-1a for everything, which is incredibly fast (significantly faster than before, according to my measurements) and pretty good at mixing bits. STL