caio.co/de/go-tdigest

Use bigger fenwick tree so we don't have to rebuild it on every add

Id
a7e25a31c299e1374d4c5bb65bf5f355f76621a8
Author
Vladimir Mihailenco
Commit time
2018-11-01T14:18:09+02:00

Modified summary.go

@@ -49,14 +49,19
s.counts[idx] = value

// Reinitialize the prefixSum cache
- // we can likely be smarter when doing this
- s.rebuildFenwickTree()
+ if s.bitree.Len() >= len(s.counts) {
+ for i := idx; i < len(s.counts); i++ {
+ s.bitree.Set(i, int64(s.counts[i]))
+ }
+ } else {
+ s.rebuildFenwickTree()
+ }

return nil
}

func (s *summary) rebuildFenwickTree() {
- x := make([]int64, s.Len())
+ x := make([]int64, cap(s.counts))
for i := 0; i < s.Len(); i++ {
x[i] = int64(s.counts[i])
}