Skip to content

Minor release of go-tdigest

Compare
Choose a tag to compare
@caio caio released this 10 Nov 11:12
· 23 commits to master since this release
v2.2.0

This release contains several performance oriented patches
and was made possible mostly by @vmihailenco adding benchmarks,
optimizing existing code and backporting improvements in the
@honeycombio fork written by @ianwilkes

Notably, the optimizations introduced on v2.0.0 by using a
fenwick tree to cache prefix sums have been refined (#23) and,
later, removed (#25) after the introduction of more thorough
benchmarks.

New Public API

  • TDigest instances may now be duplicated via Clone()

  • You may inspect the compression any given digest has been
    configured to use by calling Compression()

  • A tdigest instance may be reused/reinitialized (to minimize
    allocations, generally) directly from a buffer via
    FromBytes(bytes)

  • You may now opt to destroy a given digest when merging
    for the sake of performance: t1.Merge(t2) may be
    replaced by MergeDestructive for faster execution,
    but you must make sure to not use t2 after this since
    its state is going to be seriously invalid.

Dependency Changes

We don't import yourbasic/fenwick anymore, so this library
now doesn't require any external dependency to be used (test
dependencies remain unchanged).

Other

There's been some discussion about performance and chaging
counts to 64bit at #20 - Much of what has been discussed is
done and the next changes will likely require an API change,
so this might be one of the last v2 releases, but keep in
mind that the migration to the future v3 should be really
simple; Even easier than the v1 to v2 path.