MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / RunBenchmark

Function RunBenchmark

extensions/sets_functions_benchmark_test.cc:204–242  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

202}
203
204void RunBenchmark(const TestCase& test_case, benchmark::State& state) {
205 bool lists_overlap = test_case.result.BoolOrDie();
206
207 std::string expr = test_case.expr;
208 if (test_case.list_impl == ListImpl::kRhsConstant) {
209 expr = absl::StrReplaceAll(
210 expr, {{"y", ConstantList(lists_overlap, test_case.size)}});
211 }
212 ASSERT_OK_AND_ASSIGN(ParsedExpr parsed_expr, Parse(expr));
213
214 google::protobuf::Arena arena;
215
216 InterpreterOptions options;
217 options.constant_folding = true;
218 options.constant_arena = &arena;
219 options.enable_qualified_identifier_rewrites = true;
220 auto builder = CreateCelExpressionBuilder(options);
221 ASSERT_OK(RegisterBuiltinFunctions(builder->GetRegistry(), options));
222 ASSERT_OK(RegisterSetsFunctions(builder->GetRegistry()->InternalGetRegistry(),
223 cel::RuntimeOptions{}));
224 ASSERT_OK_AND_ASSIGN(
225 auto cel_expr, builder->CreateExpression(&(parsed_expr.expr()), nullptr));
226
227 Activation activation;
228 ASSERT_OK_AND_ASSIGN(
229 auto storage,
230 RegisterLists(test_case.result.BoolOrDie(), test_case.size,
231 test_case.list_impl == ListImpl::kWrappedModern, &arena,
232 activation));
233
234 state.SetLabel(test_case.MakeLabel(test_case.size));
235 for (auto _ : state) {
236 ASSERT_OK_AND_ASSIGN(CelValue result,
237 cel_expr->Evaluate(activation, &arena));
238 ASSERT_TRUE(result.IsBool());
239 ASSERT_EQ(result.BoolOrDie(), test_case.result.BoolOrDie())
240 << test_case.test_name;
241 }
242}
243
244void BM_SetsIntersectsTrue(benchmark::State& state) {
245 ListImpl impl = FromNumber(state.range(0));

Calls 8

ConstantListFunction · 0.85
RegisterBuiltinFunctionsFunction · 0.85
RegisterSetsFunctionsFunction · 0.85
BoolOrDieMethod · 0.80
GetRegistryMethod · 0.80
MakeLabelMethod · 0.80
IsBoolMethod · 0.45

Tested by

no test coverage detected