Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34281113 authored by Yurii Zubrytskyi's avatar Yurii Zubrytskyi
Browse files

[cleanup] Preallocate memory in CollectionUtils

+ cache the collection sizes for iteration

Bug: 282215580
Test: build + boot + perf record

Change-Id: I1c7b205395e92989d3584554d77ed8140d967651
parent f6fa34b5
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -120,8 +120,9 @@ public class CollectionUtils {
    public static @NonNull <I, O> List<O> map(@Nullable List<I> cur,
            Function<? super I, ? extends O> f) {
        if (isEmpty(cur)) return Collections.emptyList();
        final ArrayList<O> result = new ArrayList<>();
        for (int i = 0; i < cur.size(); i++) {
        final int size = cur.size();
        final ArrayList<O> result = new ArrayList<>(size);
        for (int i = 0; i < size; i++) {
            result.add(f.apply(cur.get(i)));
        }
        return result;
@@ -133,7 +134,7 @@ public class CollectionUtils {
    public static @NonNull <I, O> Set<O> map(@Nullable Set<I> cur,
            Function<? super I, ? extends O> f) {
        if (isEmpty(cur)) return emptySet();
        ArraySet<O> result = new ArraySet<>();
        ArraySet<O> result = new ArraySet<>(cur.size());
        if (cur instanceof ArraySet) {
            ArraySet<I> arraySet = (ArraySet<I>) cur;
            int size = arraySet.size();
@@ -163,7 +164,7 @@ public class CollectionUtils {
            Function<? super I, ? extends O> f) {
        if (isEmpty(cur)) return Collections.emptyList();
        List<O> result = null;
        for (int i = 0; i < cur.size(); i++) {
        for (int i = 0, size = cur.size(); i < size; i++) {
            O transformed = f.apply(cur.get(i));
            if (transformed != null) {
                result = add(result, transformed);
@@ -239,7 +240,7 @@ public class CollectionUtils {
    public static @NonNull <T> List<T> filter(@Nullable List<?> list, Class<T> c) {
        if (isEmpty(list)) return Collections.emptyList();
        ArrayList<T> result = null;
        for (int i = 0; i < list.size(); i++) {
        for (int i = 0, size = list.size(); i < size; i++) {
            final Object item = list.get(i);
            if (c.isInstance(item)) {
                result = ArrayUtils.add(result, (T) item);
@@ -273,7 +274,7 @@ public class CollectionUtils {
    public static @Nullable <T> T find(@Nullable List<T> items,
            java.util.function.Predicate<T> predicate) {
        if (isEmpty(items)) return null;
        for (int i = 0; i < items.size(); i++) {
        for (int i = 0, size = items.size(); i < size; i++) {
            final T item = items.get(i);
            if (predicate.test(item)) return item;
        }