this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

cue/benchmarks: move benchmark code out of testdata

bench_test.go used to reside in cue/testdata/benchmarks

This meant that a `go test bench=. ./...` would not run these
benchmarks, because go test never delves inside testdata directories.

- Move bench_test to the cue directory (with package cue_test)
- Make it use filepath.WalkDir (matching cuetxtar)
- Make it use the eval matrices so that the benchmarks get run against
both the old and new evaluators

Signed-off-by: Matthew Sackman <matthew@cue.works>
Change-Id: I85fb895579ad38039eb47176eeb48c1aaceda9ea
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1199739
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
Reviewed-by: Marcel van Lohuizen <mpvl@gmail.com>

+32 -24
+32 -24
cue/testdata/benchmarks/bench_test.go cue/bench_test.go
··· 12 12 // See the License for the specific language governing permissions and 13 13 // limitations under the License. 14 14 15 - package benchmarks 15 + package cue_test 16 16 17 17 import ( 18 + "io/fs" 18 19 "os" 19 20 "path/filepath" 20 21 "testing" 21 22 22 - "cuelang.org/go/cue" 23 23 "cuelang.org/go/internal/core/eval" 24 24 "cuelang.org/go/internal/core/runtime" 25 + "cuelang.org/go/internal/cuetdtest" 25 26 "cuelang.org/go/internal/cuetest" 26 27 "cuelang.org/go/internal/cuetxtar" 27 28 "golang.org/x/tools/txtar" 28 29 ) 29 30 31 + var ( 32 + matrix = cuetdtest.FullMatrix 33 + ) 34 + 30 35 func Benchmark(b *testing.B) { 31 - entries, err := os.ReadDir(".") 32 - if err != nil { 33 - b.Fatal(err) 34 - } 36 + root := "testdata/benchmarks" 37 + err := filepath.WalkDir(root, func(fullpath string, entry fs.DirEntry, err error) error { 38 + if err != nil { 39 + return err 40 + } 35 41 36 - for _, entry := range entries { 37 - name := entry.Name() 38 - if entry.IsDir() || filepath.Ext(name) != ".txtar" { 39 - continue 42 + if entry.IsDir() || filepath.Ext(fullpath) != ".txtar" { 43 + return nil 40 44 } 41 45 42 - a, err := txtar.ParseFile(name) 46 + a, err := txtar.ParseFile(fullpath) 43 47 if err != nil { 44 - b.Fatal(err) 48 + return err 45 49 } 46 50 47 51 inst := cuetxtar.Load(a, b.TempDir())[0] 48 52 if inst.Err != nil { 49 - b.Fatal(inst.Err) 53 + return inst.Err 50 54 } 51 55 52 56 r := runtime.New() 53 - 54 57 v, err := r.Build(nil, inst) 55 58 if err != nil { 56 59 b.Fatal(err) ··· 83 86 if err != nil { 84 87 b.Fatal(err) 85 88 } 86 - os.WriteFile(name, txtar.Format(a), info.Mode()) 89 + os.WriteFile(fullpath, txtar.Format(a), info.Mode()) 87 90 } 88 91 89 - b.Run(name, func(b *testing.B) { 90 - b.ReportAllocs() 91 - for i := 0; i < b.N; i++ { 92 - inst := cue.Build(cuetxtar.Load(a, b.TempDir()))[0] 93 - if inst.Err != nil { 94 - b.Fatal(inst.Err) 95 - } 96 - 97 - inst.Value().Validate() 92 + b.Run(entry.Name(), func(b *testing.B) { 93 + for _, m := range matrix { 94 + b.Run(m.Name(), func(b *testing.B) { 95 + b.ReportAllocs() 96 + for i := 0; i < b.N; i++ { 97 + ctx := m.Context() 98 + value := ctx.BuildInstance(cuetxtar.Load(a, b.TempDir())[0]) 99 + value.Validate() 100 + } 101 + }) 98 102 } 99 103 }) 104 + return nil 105 + }) 106 + if err != nil { 107 + b.Fatal(err) 100 108 } 101 109 }