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

Function BM_MapTransformComprehension

eval/tests/modern_benchmark_test.cc:1277–1329  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1275BENCHMARK(BM_ComprehensionCpp)->Range(1, 1 << 20);
1276
1277void BM_MapTransformComprehension(benchmark::State& state) {
1278 ASSERT_OK_AND_ASSIGN(auto source,
1279 NewSource("map_var.transformMapEntry(k, v, {v:k})"));
1280
1281 MacroRegistry registry;
1282 ASSERT_THAT(
1283 extensions::RegisterComprehensionsV2Macros(registry, ParserOptions()),
1284 IsOk());
1285
1286 ASSERT_OK_AND_ASSIGN(auto parsed_expr,
1287 EnrichedParse(*source, registry, ParserOptions()));
1288
1289 RuntimeOptions options = GetOptions();
1290 options.comprehension_max_iterations = 10000000;
1291
1292 // This is a critical optimization: it allows the comprehension to accumulate
1293 // results in a mutable map instead of cloning and augmenting an unmodifiable
1294 // map on every iteration.
1295 options.enable_comprehension_mutable_map = true;
1296
1297 ASSERT_OK_AND_ASSIGN(auto builder,
1298 CreateStandardRuntimeBuilder(
1299 internal::GetTestingDescriptorPool(), options));
1300
1301 ASSERT_THAT(extensions::RegisterComprehensionsV2Functions(
1302 builder.function_registry(), options),
1303 IsOk());
1304
1305 ASSERT_OK_AND_ASSIGN(auto runtime, std::move(builder).Build());
1306
1307 google::protobuf::Arena arena;
1308 Activation activation;
1309
1310 auto map_builder = cel::NewMapValueBuilder(&arena);
1311
1312 int len = state.range(0);
1313 map_builder->Reserve(len);
1314 for (int i = 0; i < len; i++) {
1315 ASSERT_THAT(map_builder->Put(IntValue(i), IntValue(i)), IsOk());
1316 }
1317
1318 activation.InsertOrAssignValue("map_var", std::move(*map_builder).Build());
1319
1320 ASSERT_OK_AND_ASSIGN(auto cel_expr, ProtobufRuntimeAdapter::CreateProgram(
1321 *runtime, parsed_expr.parsed_expr()));
1322
1323 for (auto _ : state) {
1324 ASSERT_OK_AND_ASSIGN(cel::Value result,
1325 cel_expr->Evaluate(&arena, activation));
1326 ASSERT_TRUE(InstanceOf<MapValue>(result));
1327 ASSERT_THAT(Cast<MapValue>(result).Size(), IsOkAndHolds(len));
1328 }
1329}
1330
1331BENCHMARK(BM_MapTransformComprehension)->Range(1, 1 << 16);
1332

Callers

nothing calls this directly

Calls 10

ParserOptionsClass · 0.85
GetOptionsFunction · 0.85
InsertOrAssignValueMethod · 0.80
IntValueClass · 0.50
ReserveMethod · 0.45
PutMethod · 0.45
BuildMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected