Improve replaceAll.
The default implementation of Map.replaceAll() iterates through the entrySet. Switch to a simple for loop iterating through the array since the iterator is an inefficient way to access the array contents. Benchmark results: Before: android.util.ArrayMapPerfTest#testReplaceAll_Large: replaceAll_Large_min (ns): 888977 replaceAll_Large_median (ns): 904642 replaceAll_Large_mean (ns): 914596 replaceAll_Large_standardDeviation: 23960 android.util.ArrayMapPerfTest#testReplaceAll_Small: replaceAll_Small_min (ns): 177767 replaceAll_Small_median (ns): 179955 replaceAll_Small_mean (ns): 180331 replaceAll_Small_standardDeviation: 2865 After: android.util.ArrayMapPerfTest#testReplaceAll_Large: replaceAll_Large_min (ns): 557385 replaceAll_Large_median (ns): 586495 replaceAll_Large_mean (ns): 583712 replaceAll_Large_standardDeviation: 20356 android.util.ArrayMapPerfTest#testReplaceAll_Small: replaceAll_Small_min (ns): 108051 replaceAll_Small_median (ns): 110802 replaceAll_Small_mean (ns): 109987 replaceAll_Small_standardDeviation: 1334 Bug: 194098491 Test: atest CorePerfTests:ArrayMapPerfTest (see results above) Test: atest CtsUtilTestCases:ArrayMapTest Test: atest FrameworksCoreTests:ArrayMapTest Change-Id: If87ae5f3aa4b184b95c16aed5f2fb6f31d11668a
Loading
Please register or sign in to comment