From f424e04b6cdcc9cc2228b00a9c68cfa3b1c610dd Mon Sep 17 00:00:00 2001 From: Omar Mahamid Date: Sat, 2 May 2026 12:43:18 +0300 Subject: [PATCH] Performance improvements findAgentToRun scans the session event list backward in place instead of copying the whole list and reversing it. That removes the per-invocation temporary ArrayList allocation on long histories. --- core/src/main/java/com/google/adk/runner/Runner.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/google/adk/runner/Runner.java b/core/src/main/java/com/google/adk/runner/Runner.java index 44a281f72..0a2ea10df 100644 --- a/core/src/main/java/com/google/adk/runner/Runner.java +++ b/core/src/main/java/com/google/adk/runner/Runner.java @@ -61,7 +61,6 @@ import io.reactivex.rxjava3.subjects.CompletableSubject; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -772,10 +771,9 @@ private boolean isTransferableAcrossAgentTree(BaseAgent agentToRun) { * @return agent to run. */ private BaseAgent findAgentToRun(Session session, BaseAgent rootAgent) { - List events = new ArrayList<>(session.events()); - Collections.reverse(events); - - for (Event event : events) { + List events = session.events(); + for (int i = events.size() - 1; i >= 0; i--) { + Event event = events.get(i); String author = event.author(); if (author == null) { continue;