Skip to content

Commit af9851f

Browse files
authored
Merge pull request #38 from w-zr/main
refactor: address issues in test and enhance memory efficiency in com…
2 parents 84253e5 + a4f1e00 commit af9851f

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

compressed.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,9 @@ func (v *compressedList) UnmarshalBinary(data []byte) error {
103103
return nil
104104
}
105105

106-
func newCompressedList() *compressedList {
106+
func newCompressedList(capacity int) *compressedList {
107107
v := &compressedList{}
108-
v.b = make(variableLengthList, 0)
108+
v.b = make(variableLengthList, 0, capacity)
109109
return v
110110
}
111111

hyperloglog.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func newSketch(precision uint8, sparse bool) (*Sketch, error) {
7171
}
7272
if sparse {
7373
s.tmpSet = set{}
74-
s.sparseList = newCompressedList()
74+
s.sparseList = newCompressedList(0)
7575
} else {
7676
s.regs = newRegisters(m)
7777
}
@@ -253,9 +253,9 @@ func (sk *Sketch) Estimate() uint64 {
253253
}
254254

255255
if sk.b == 0 {
256-
est = (sk.alpha * m * (m - ez) / (sum + beta(ez)))
256+
est = sk.alpha * m * (m - ez) / (sum + beta(ez))
257257
} else {
258-
est = (sk.alpha * m * m / sum)
258+
est = sk.alpha * m * m / sum
259259
}
260260

261261
return uint64(est + 0.5)
@@ -272,7 +272,7 @@ func (sk *Sketch) mergeSparse() {
272272
}
273273
sort.Sort(keys)
274274

275-
newList := newCompressedList()
275+
newList := newCompressedList(4*len(sk.tmpSet) + len(sk.sparseList.b))
276276
for iter, i := sk.sparseList.Iter(), 0; iter.HasNext() || i < len(keys); {
277277
if !iter.HasNext() {
278278
newList.Append(keys[i])

hyperloglog_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -766,14 +766,13 @@ func genData(num int) [][]byte {
766766

767767
for i := 0; i < num; i++ {
768768
// generate 8 random bytes
769-
n, err := rand.Read(buf)
769+
n, err := crand.Read(buf)
770770
if err != nil {
771771
panic(err)
772772
} else if n != 8 {
773773
panic(fmt.Errorf("only %d bytes generated", n))
774774
}
775-
776-
copiedBuf := make([]byte, 8)
775+
copiedBuf := make([]byte, 8)
777776
copy(copiedBuf, buf) // copy the contents of buf to copiedBuf
778777
out = append(out, copiedBuf)
779778
}

0 commit comments

Comments
 (0)