Fix usage of java.util.LinkedList. Linked lists are only needed if constant-time insertion/deletion in the middle is required. Otherwise, ArrayList is faster, uses less memory, and has less overhead w.r.t. garbage collection. Motivation: some integrations of deobfuscation spend >35% of the time running garbage collection.
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java index 3eb0ec1..bdd2b9b 100644 --- a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java +++ b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
@@ -18,8 +18,8 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; -import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.function.Consumer; @@ -512,7 +512,7 @@ if (peekChar(0) == ')') { arguments = new String[0]; } else { - List<String> items = new LinkedList<>(); + List<String> items = new ArrayList<>(); items.add(parseType(true)); skipWhitespace(); while (peekChar(0) != ')') {