Avoid autoboxing overhead in hash calculation
Avoid passing primitive data types into Objects.hash() which will
convert them to their corresponding object wrapper types
automatically.
Test: atest TetheringTests
Bug: 261923493
Change-Id: I2efe7f3e50923ad2e33cfd58ae7e1e1cf7fd34bd
diff --git a/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java b/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
index 2b14a42..4bd7e6a 100644
--- a/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
+++ b/Tethering/src/com/android/networkstack/tethering/BpfCoordinator.java
@@ -1597,10 +1597,8 @@
@Override
public int hashCode() {
- // TODO: if this is ever used in production code, don't pass ifindices
- // to Objects.hash() to avoid autoboxing overhead.
- return Objects.hash(upstreamIfindex, downstreamIfindex, sourcePrefix, inDstMac,
- outSrcMac, outDstMac);
+ return 13 * upstreamIfindex + 41 * downstreamIfindex
+ + Objects.hash(sourcePrefix, inDstMac, outSrcMac, outDstMac);
}
@Override
@@ -1725,9 +1723,8 @@
@Override
public int hashCode() {
- // TODO: if this is ever used in production code, don't pass ifindices
- // to Objects.hash() to avoid autoboxing overhead.
- return Objects.hash(upstreamIfindex, downstreamIfindex, address, srcMac, dstMac);
+ return 13 * upstreamIfindex + 41 * downstreamIfindex
+ + Objects.hash(address, srcMac, dstMac);
}
@Override