On Friday, 16 December 2016 06:22:47 UTC-5, Jan Mercl wrote:
>
> > but I am curious: why the need for internal/gc, "a Go compiler front
> end. Work in progess" ?
> > it seems to be very much alike to go/types (or, rather, a mix of
> go/types and go/ast).
>
> For example (not completely fair comparison but you get the idea):
>
> jnml@r550:~/src/github.com/cznic/browse$ go install -tags
> debug.browse && browse
> main.go:162: loaded+xref0: 65 packages in 486.248926ms
> jnml@r550:~/src/github.com/cznic/browse$ time ssadump .
>
> real 0m2.218s
> user 0m6.588s
> sys 0m0.628s
>
ssadump is loading, cgo-preprocessing, parsing, and type-checking the
entire transitive closure of source files required by the current package,
then building its SSA representation in a second pass, so these
measurements are not at all comparable. Two other data points:
1) If you modify ssadump to skip cgo preprocessing, type-checking of
imported function bodies, and SSA construction:
conf.TypeChecker.FakeImportC = true
conf.TypeCheckFuncBodies = func(path string) bool {
return path == "github.com/cznic/browse"
}
... = conf.Load(...)
return
then it loads that package and its dependencies from source in under 700ms.
2) The golang.org/x/tools/cmd/gotype tool, which loads only a single
package from source, and loads export data for all imports, can process
that package in under 100ms.
The go/parser is plenty fast enough. ssadump may be the wrong starting
point for how to use it, though.
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.