diff options
author | Taras Tsugrii <ttsugrii@fb.com> | 2018-08-02 06:12:15 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-02 06:13:31 -0700 |
commit | 77e4792a06ba5b3332a15b3069c30fb8f4ed5741 (patch) | |
tree | 0e4f7e597b55d4fa77b7a8e91fe6101211f272ae /src/main/java/com/google/devtools/build/lib/syntax | |
parent | c004ff117ad72fd387102600e4be47fddf7bc2ae (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.java | 6 |
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); |