From f2292dea7dd5a4a67298c67a730940acc4a7948f Mon Sep 17 00:00:00 2001 From: gak Date: Wed, 2 Jul 2025 11:44:16 -0700 Subject: [PATCH] Change CelUnknownSet to use `Sets.union` and `SetView.immutableCopy`, which builds the copy using a pre-sized builder to avoid churn on the internal hash table. PiperOrigin-RevId: 778585485 --- .../src/main/java/dev/cel/runtime/CelUnknownSet.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/runtime/src/main/java/dev/cel/runtime/CelUnknownSet.java b/runtime/src/main/java/dev/cel/runtime/CelUnknownSet.java index 070e94cf0..05201d1e5 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelUnknownSet.java +++ b/runtime/src/main/java/dev/cel/runtime/CelUnknownSet.java @@ -16,6 +16,7 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; /** * Unknown set representation. @@ -65,14 +66,8 @@ private static CelUnknownSet create( public static CelUnknownSet union(CelUnknownSet lhs, CelUnknownSet rhs) { return create( - ImmutableSet.builder() - .addAll(lhs.attributes()) - .addAll(rhs.attributes()) - .build(), - ImmutableSet.builder() - .addAll(lhs.unknownExprIds()) - .addAll(rhs.unknownExprIds()) - .build()); + Sets.union(lhs.attributes(), rhs.attributes()).immutableCopy(), + Sets.union(lhs.unknownExprIds(), rhs.unknownExprIds()).immutableCopy()); } public CelUnknownSet merge(CelUnknownSet rhs) {