From 27189f4dff3c016d7a635b3cfc12fd02e53e238e Mon Sep 17 00:00:00 2001 From: Richard Uhler Date: Fri, 9 May 2025 12:45:56 -0700 Subject: [PATCH] Optimize NetworkStats.filteredClone function. Avoid duplicate calls to getValues for non-matched entries. Performance experiments suggest it is worth the cost of the additional BitSet allocation to keep track of what matched. BitSet performs slightly better, and allocates/uses/frees less memory, than a boolean array. Bug: 416650909 Test: atest ConnectivityCoverageTests:android.net.connectivity.android.net.NetworkStatsTest Flag: EXEMPT bugfix Change-Id: I932375798a58f8ee59b6028faade5fa88ba053cb --- framework-t/src/android/net/NetworkStats.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/framework-t/src/android/net/NetworkStats.java b/framework-t/src/android/net/NetworkStats.java index 5b7dddb454..a50352e463 100644 --- a/framework-t/src/android/net/NetworkStats.java +++ b/framework-t/src/android/net/NetworkStats.java @@ -44,6 +44,7 @@ import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; +import java.util.BitSet; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -1431,21 +1432,26 @@ public final class NetworkStats implements Parcelable, Iterable