前天发现一个微软 hash_map的效率问题。一个对<unsigned int, int>的六百万次查找,用了接近一分钟。本来不觉得怎么的,可是相似的代码,在ubuntu上面,执行才不到一秒。这个问题就大了。
























































在Linux服务器上的运行结果:




在Windows ( XP 和 Vista) 的运行结果




在Windows机器上跟踪执行的代码,初步怀疑,是微软版本的hash_map,hash计算分布不够均匀所致。那hash代码太简单了,look:








_Mask 是一个固定值,为0xdeaddeef。(Dead deef -- 死牛吗?)
这真是出了个难题--难道我还必须去搞其他的Hashmap来替代微软的,如果我一定要在windows平台上使用的话?