标签:sdn 计算 cat 解决 优秀 级别 near lan 直接
所谓的基数计数就是统计一组元素中不重复的元素的个数。如统计某个网站的UV,或者用户搜索网站的关键词数量;再如对一个网站分别统计了三天的UV,现在需要知道这三天的UV总量是多少,怎么融合多个统计值。
(假设元素个数为m,去重后个数为n)
时间复杂为O(m2),空间复杂度随元素个数线性增长。数据量一大就崩了。
将数据插入到B+树中达到去重目的,然后顺序访问叶节点链从而得到n值。时间复杂的为O( lgm + n ),内存亦随元素个数线性增长。数据量一大就崩了。
用位数组来表示各元素是否出现,每个元素对应一位,所需的总内存为n bit。能大大减少内存占用且位操作迅速。
如果要统计1亿个数据的基数值,大约需要内存100000000/8/1024/1024 ≈ 12M,内存减少占用的效果显著。然而统计一个对象的基数值需要12M,如果统计10000个对象,就需要将近120G,同样不能广泛用于大数据场景。
2、原始论文:Loglog Counting of Large Cardinalities
标签:sdn 计算 cat 解决 优秀 级别 near lan 直接
原文地址:https://www.cnblogs.com/z-sm/p/9337648.html