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
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])
}