Skip to content

lytics/hll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

70adc91 · Apr 10, 2018

History

47 Commits
Aug 20, 2014
Aug 20, 2014
Aug 27, 2014
Aug 20, 2014
Aug 20, 2014
Aug 20, 2014
Aug 28, 2014
Aug 20, 2014
Aug 25, 2014
Apr 2, 2018
Aug 21, 2015
Aug 21, 2015
Apr 2, 2018
Sep 23, 2015
Apr 2, 2018
Aug 20, 2014
Apr 6, 2018
Aug 20, 2014
Aug 28, 2014
Aug 28, 2014

Repository files navigation

HyperLogLog++ for Go

This is a Go implementation of the HyperLogLog++ algorithm from "HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm" by Heule, Nunkesser and Hall of Google. This is a cardinality estimation algorithm: given a stream of input elements, it will estimate the number of unique items in the stream. The estimation error can be controlled by choosing how much memory to use. HyperLogLog++ improves on the basic HyperLogLog algorithm by using less space, improving accuracy, and correcting bias.

This code is a translation of the pseudocode contained in Figures 6 and 7 of the Google paper. Not all algorithms are provided in the paper, but we've tried our best to be true to the authors' intent when writing the omitted algorithms. We're not trying to be creative, we're just implementing the algorithm described in the paper as directly as possible. Our deviations are described here.

The HyperLogLog++ paper is available here

Instructions

See the docs.