mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
perf: improve IPv4 tr_address comparison (#5651)
This commit is contained in:
@@ -597,7 +597,9 @@ int tr_address::compare(tr_address const& that) const noexcept // <=>
|
||||
return this->is_ipv4() ? 1 : -1;
|
||||
}
|
||||
|
||||
return this->is_ipv4() ? memcmp(&this->addr.addr4, &that.addr.addr4, sizeof(this->addr.addr4)) :
|
||||
// in_addr_t is by definition uint32_t, so we convert it to int64_t,
|
||||
// the smallest signed integer type that can contain all values of uint32_t.
|
||||
return this->is_ipv4() ? static_cast<int>(int64_t{ ntohl(this->addr.addr4.s_addr) } - ntohl(that.addr.addr4.s_addr)) :
|
||||
memcmp(&this->addr.addr6.s6_addr, &that.addr.addr6.s6_addr, sizeof(this->addr.addr6.s6_addr));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user