| 453 | } |
| 454 | |
| 455 | func Benchmark_largeNestedStructAccess(b *testing.B) { |
| 456 | type Env struct { |
| 457 | Inner struct { |
| 458 | Data [1024 * 1024 * 10]byte |
| 459 | Field int |
| 460 | } |
| 461 | } |
| 462 | |
| 463 | program, err := expr.Compile(`Inner.Field > 0 && Inner.Field > 1 && Inner.Field < 99`, expr.Env(Env{})) |
| 464 | require.NoError(b, err) |
| 465 | |
| 466 | env := Env{} |
| 467 | env.Inner.Field = 21 |
| 468 | |
| 469 | var out any |
| 470 | b.ResetTimer() |
| 471 | for n := 0; n < b.N; n++ { |
| 472 | out, err = vm.Run(program, &env) |
| 473 | } |
| 474 | b.StopTimer() |
| 475 | |
| 476 | require.NoError(b, err) |
| 477 | require.True(b, out.(bool)) |
| 478 | } |
| 479 | |
| 480 | func Benchmark_largeNestedArrayAccess(b *testing.B) { |
| 481 | type Env struct { |