aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
diff options
context:
space:
mode:
authorGravatar Taras Tsugrii <ttsugrii@fb.com>2018-08-02 06:12:15 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-02 06:13:31 -0700
commit77e4792a06ba5b3332a15b3069c30fb8f4ed5741 (patch)
tree0e4f7e597b55d4fa77b7a8e91fe6101211f272ae /src/main/java/com/google/devtools/build/lib/syntax
parentc004ff117ad72fd387102600e4be47fddf7bc2ae (diff)
[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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java6
1 files changed, 3 insertions, 3 deletions
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);