| 431 | } |
| 432 | |
| 433 | func Benchmark_largeStructAccess(b *testing.B) { |
| 434 | type Env struct { |
| 435 | Data [1024 * 1024 * 10]byte |
| 436 | Field int |
| 437 | } |
| 438 | |
| 439 | program, err := expr.Compile(`Field > 0 && Field > 1 && Field < 99`, expr.Env(Env{})) |
| 440 | require.NoError(b, err) |
| 441 | |
| 442 | env := Env{Field: 21} |
| 443 | |
| 444 | var out any |
| 445 | b.ResetTimer() |
| 446 | for n := 0; n < b.N; n++ { |
| 447 | out, err = vm.Run(program, &env) |
| 448 | } |
| 449 | b.StopTimer() |
| 450 | |
| 451 | require.NoError(b, err) |
| 452 | require.True(b, out.(bool)) |
| 453 | } |
| 454 | |
| 455 | func Benchmark_largeNestedStructAccess(b *testing.B) { |
| 456 | type Env struct { |