From 77e4792a06ba5b3332a15b3069c30fb8f4ed5741 Mon Sep 17 00:00:00 2001 From: Taras Tsugrii Date: Thu, 2 Aug 2018 06:12:15 -0700 Subject: [Skylark] Optimize UserDefinedFunction. Java's iterator overhead is significant (2X slower than using indices), so it's worthwhile to use indices for hot code. Closes #5737. PiperOrigin-RevId: 207088309 --- .../com/google/devtools/build/lib/syntax/UserDefinedFunction.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java index a892bda51b..8410dd7653 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java @@ -71,9 +71,9 @@ public class UserDefinedFunction extends BaseFunction { env.enterScope(this, lexicalFrame, ast, definitionGlobals); // Registering the functions's arguments as variables in the local Environment - int i = 0; - for (String name : names) { - env.update(name, arguments[i++]); + // foreach loop is not used to avoid iterator overhead + for (int i = 0; i < names.size(); ++i) { + env.update(names.get(i), arguments[i]); } Eval eval = Eval.fromEnvironment(env); -- cgit v1.2.3