Skip to content

Commit aaec509

Browse files
l46kokcopybara-github
authored andcommitted
Switch from enhanced for-loop to indexed one to improve comprehension performance
PiperOrigin-RevId: 891934916
1 parent 576064d commit aaec509

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

runtime/src/main/java/dev/cel/runtime/planner/NamespacedAttribute.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ public Object resolve(long exprId, GlobalResolver ctx, ExecutionFrame frame) {
7777

7878
if (partialVars != null) {
7979
ImmutableList<CelAttributePattern> patterns = partialVars.unknowns();
80-
for (Qualifier qualifier : qualifiers) {
81-
attr = attr.qualify(CelAttribute.Qualifier.fromGeneric(qualifier.value()));
80+
// Avoid enhanced for loop to prevent UnmodifiableIterator from being allocated
81+
for (int i = 0; i < qualifiers.size(); i++) {
82+
attr = attr.qualify(CelAttribute.Qualifier.fromGeneric(qualifiers.get(i).value()));
8283
}
8384

8485
CelAttributePattern partialMatch = findPartialMatchingPattern(attr, patterns).orElse(null);
@@ -178,8 +179,9 @@ private static Object applyQualifiers(
178179
Object value, CelValueConverter celValueConverter, ImmutableList<Qualifier> qualifiers) {
179180
Object obj = celValueConverter.toRuntimeValue(value);
180181

181-
for (Qualifier qualifier : qualifiers) {
182-
obj = qualifier.qualify(obj);
182+
// Avoid enhanced for loop to prevent UnmodifiableIterator from being allocated
183+
for (int i = 0; i < qualifiers.size(); i++) {
184+
obj = qualifiers.get(i).qualify(obj);
183185
}
184186

185187
return celValueConverter.maybeUnwrap(obj);

runtime/src/main/java/dev/cel/runtime/planner/RelativeAttribute.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ public Object resolve(long exprId, GlobalResolver ctx, ExecutionFrame frame) {
4040

4141
obj = celValueConverter.toRuntimeValue(obj);
4242

43-
for (Qualifier qualifier : qualifiers) {
44-
obj = qualifier.qualify(obj);
43+
// Avoid enhanced for loop to prevent UnmodifiableIterator from being allocated
44+
for (int i = 0; i < qualifiers.size(); i++) {
45+
obj = qualifiers.get(i).qualify(obj);
4546
}
4647

4748
return celValueConverter.maybeUnwrap(obj);

0 commit comments

Comments
 (0)