Source file
src/go/types/lookup_test.go
1
2
3
4
5 package types_test
6
7 import (
8 "go/token"
9 "path/filepath"
10 "runtime"
11 "testing"
12
13 . "go/types"
14 )
15
16
17
18
19 func BenchmarkLookupFieldOrMethod(b *testing.B) {
20
21 path := filepath.Join(runtime.GOROOT(), "src", "net", "http")
22
23 fset := token.NewFileSet()
24 files, err := pkgFiles(fset, path)
25 if err != nil {
26 b.Fatal(err)
27 }
28
29 conf := Config{
30 Importer: defaultImporter(fset),
31 }
32
33 pkg, err := conf.Check("http", fset, files, nil)
34 if err != nil {
35 b.Fatal(err)
36 }
37
38 scope := pkg.Scope()
39 names := scope.Names()
40
41
42 lookup := func() {
43 for _, name := range names {
44 typ := scope.Lookup(name).Type()
45 LookupFieldOrMethod(typ, true, pkg, "m")
46 }
47 }
48
49
50
51 lookup()
52
53 b.ResetTimer()
54 for i := 0; i < b.N; i++ {
55 lookup()
56 }
57 }
58
View as plain text