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) != ')') {