simplify DistCmp

Refactor DistCmp to improve distance comparison logic.
This commit is contained in:
Felix Lange 2025-10-13 14:17:57 +02:00 committed by GitHub
parent bacd81ee73
commit 39f523285a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -359,11 +359,10 @@ func ParseID(in string) (ID, error) {
// Returns -1 if a is closer to target, 1 if b is closer to target // Returns -1 if a is closer to target, 1 if b is closer to target
// and 0 if they are equal. // and 0 if they are equal.
func DistCmp(target, a, b ID) int { func DistCmp(target, a, b ID) int {
const size = 8 for i := 0; i < len(target); i += 8 {
n := len(target) tn := binary.BigEndian.Uint64(target[i:i+8])
for i := 0; i+size <= n; i += size { da := tn ^ binary.BigEndian.Uint64(a[i:i+8])
da := binary.BigEndian.Uint64(a[i:i+size]) ^ binary.BigEndian.Uint64(target[i:i+size]) db := tn ^ binary.BigEndian.Uint64(b[i:i+8])
db := binary.BigEndian.Uint64(b[i:i+size]) ^ binary.BigEndian.Uint64(target[i:i+size])
if da > db { if da > db {
return 1 return 1
} else if da < db { } else if da < db {