cleanup share comparison

This commit is contained in:
DataHoarder 2024-04-13 04:12:49 +02:00
parent dbeb877d6c
commit 927b53b1f6
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
2 changed files with 14 additions and 12 deletions

View file

@ -51,7 +51,7 @@ func (p *PackedAddress) Compare(b Interface) int {
return crypto.CompareConsensusPublicKeyBytes(&p[PackedAddressView], b.ViewPublicKey())
}
func (p PackedAddress) ComparePacked(other *PackedAddress) int {
func (p *PackedAddress) ComparePacked(other *PackedAddress) int {
//compare spend key
resultSpendKey := crypto.CompareConsensusPublicKeyBytes(&p[PackedAddressSpend], &other[PackedAddressSpend])

View file

@ -16,19 +16,21 @@ func (s Shares) Index(addr address.PackedAddress) int {
})
}
func fastShareCompare(a *Share, b *Share) int {
// Fast tests first. Skips further checks
if diff := int(a.Address[address.PackedAddressSpend][crypto.PublicKeySize-1]) - int(b.Address[address.PackedAddressSpend][crypto.PublicKeySize-1]); diff != 0 {
return diff
}
if a.Address == b.Address {
return 0
}
return a.Address.ComparePacked(&b.Address)
}
// Sort Consensus way of sorting Shares
func (s Shares) Sort() {
slices.SortFunc(s, func(a *Share, b *Share) int {
// Fast tests first. Skips further checks
if diff := int(a.Address[address.PackedAddressSpend][crypto.PublicKeySize-1]) - int(b.Address[address.PackedAddressSpend][crypto.PublicKeySize-1]); diff != 0 {
return diff
}
if a.Address == b.Address {
return 0
}
return a.Address.ComparePacked(&b.Address)
})
slices.SortFunc(s, fastShareCompare)
}
func (s Shares) Clone() (o Shares) {