From f0111d0efa89783929e08aaee97e658e0d1e3259 Mon Sep 17 00:00:00 2001 From: lani_karrot Date: Wed, 10 Dec 2025 12:13:27 +0900 Subject: [PATCH 1/2] perf: use direct comparison --- theta/intersection.go | 2 +- theta/union.go | 2 +- theta/update_sketch.go | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/theta/intersection.go b/theta/intersection.go index 7c34536..a329efb 100644 --- a/theta/intersection.go +++ b/theta/intersection.go @@ -177,7 +177,7 @@ func (i *Intersection) Update(sketch Sketch) error { i.hashtable = NewHashtable(lgSize, lgSize-1, ResizeX1, 1.0, i.hashtable.theta, i.hashtable.seed, i.hashtable.isEmpty) for j := 0; j < matchCount; j++ { key, err := i.hashtable.Find(matchesEntries[j]) - if err != nil && errors.Is(err, ErrKeyNotFoundAndNoEmptySlots) { + if err != nil && err == ErrKeyNotFoundAndNoEmptySlots { return err } diff --git a/theta/union.go b/theta/union.go index 480781c..b501639 100644 --- a/theta/union.go +++ b/theta/union.go @@ -136,7 +136,7 @@ func (u *Union) Update(sketch Sketch) error { if entry < u.theta && entry < u.hashtable.theta { index, err := u.hashtable.Find(entry) if err != nil { - if errors.Is(err, ErrKeyNotFound) { + if err == ErrKeyNotFound { u.hashtable.Insert(index, entry) continue } diff --git a/theta/update_sketch.go b/theta/update_sketch.go index 4540f72..03a4028 100644 --- a/theta/update_sketch.go +++ b/theta/update_sketch.go @@ -266,7 +266,7 @@ func (s *QuickSelectUpdateSketch) UpdateInt64(value int64) error { index, err := s.table.Find(hash) if err != nil { - if errors.Is(err, ErrKeyNotFound) { + if err == ErrKeyNotFound { s.table.Insert(index, hash) return nil } @@ -292,7 +292,7 @@ func (s *QuickSelectUpdateSketch) UpdateInt32(value int32) error { index, err := s.table.Find(hash) if err != nil { - if errors.Is(err, ErrKeyNotFound) { + if err == ErrKeyNotFound { s.table.Insert(index, hash) return nil } @@ -362,7 +362,7 @@ func (s *QuickSelectUpdateSketch) UpdateString(value string) error { index, err := s.table.Find(hash) if err != nil { - if errors.Is(err, ErrKeyNotFound) { + if err == ErrKeyNotFound { s.table.Insert(index, hash) return nil } @@ -382,7 +382,7 @@ func (s *QuickSelectUpdateSketch) UpdateBytes(data []byte) error { index, err := s.table.Find(hash) if err != nil { - if errors.Is(err, ErrKeyNotFound) { + if err == ErrKeyNotFound { s.table.Insert(index, hash) return nil } From 5c5acc7cf3ca8a94a89fafbc121b30ad7a9fda55 Mon Sep 17 00:00:00 2001 From: lani_karrot Date: Wed, 10 Dec 2025 15:12:02 +0900 Subject: [PATCH 2/2] perf: use direct comparision for a not b --- theta/a_not_b.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/theta/a_not_b.go b/theta/a_not_b.go index 6a9a921..1224f96 100644 --- a/theta/a_not_b.go +++ b/theta/a_not_b.go @@ -18,7 +18,6 @@ package theta import ( - "errors" "fmt" "slices" @@ -118,7 +117,7 @@ func computeHashBased(a, b Sketch, theta uint64) ([]uint64, error) { for entry := range b.All() { if entry < theta { idx, err := table.Find(entry) - if err != nil && errors.Is(err, ErrKeyNotFoundAndNoEmptySlots) { + if err != nil && err == ErrKeyNotFoundAndNoEmptySlots { return nil, err } @@ -133,7 +132,7 @@ func computeHashBased(a, b Sketch, theta uint64) ([]uint64, error) { for entry := range a.All() { if entry < theta { _, err := table.Find(entry) - if err != nil && errors.Is(err, ErrKeyNotFound) { + if err != nil && err == ErrKeyNotFound { entries = append(entries, entry) } } else if a.IsOrdered() {