mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 05:06:43 +00:00
simplify DistCmp
Refactor DistCmp to improve distance comparison logic.
This commit is contained in:
parent
bacd81ee73
commit
39f523285a
1 changed files with 4 additions and 5 deletions
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue