求上亿个8字节整数计数算法
一见 2009-03-10 09:16:32 约有上万个实体,需要统计不同用户访问的次数,每个用户使用一个8字节随机整数表示(可叫作用户号),对不同实体,访问的用户个数不等,且差异很大,高的达到几千万,小的只有几十万、几万、甚至更低。需要一种高效的算法来支撑记录访问这些实体的用户数,一个用户访问N个实体时,算N次,但一个用户访问同一个实体M次时,只次一次。最终目的是记录用户数,所以只要能达到目标,可以不用记录具体的用户号。
测试发现,采用stl中的hash_set,当数量达到百万级别的时候就已经不行了。一直在思考一种更强的算法,感觉应当使用类似位图的作法,这样占用的空间也小,但还没有想出来如何实现。CU高手如云,希望可以得到一点指点。