From: Daniel Martí Date: Fri, 13 Sep 2019 14:45:18 +0000 (+0100) Subject: cmd/compiler: skip some go/printer work in rulegen X-Git-Tag: go1.14beta1~1083 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0e0bff840e3cd041aa9d103c6135862faae9c03f;p=gostls13.git cmd/compiler: skip some go/printer work in rulegen We use go/format on the final output, so don't bother with the added tabwriter work to align comments when using go/printer. name old time/op new time/op delta Rulegen 2.53s ± 2% 2.48s ± 1% -2.20% (p=0.032 n=5+5) name old user-time/op new user-time/op delta Rulegen 11.2s ± 1% 10.8s ± 0% -3.72% (p=0.008 n=5+5) name old sys-time/op new sys-time/op delta Rulegen 218ms ±17% 207ms ±19% ~ (p=0.548 n=5+5) name old peak-RSS-bytes new peak-RSS-bytes delta Rulegen 184MB ± 3% 175MB ± 4% ~ (p=0.056 n=5+5) Change-Id: I53bad2ab15cace67415f2171fffcd13ed596e62b Reviewed-on: https://go-review.googlesource.com/c/go/+/195219 Run-TryBot: Daniel Martí Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/compile/internal/ssa/gen/rulegen.go b/src/cmd/compile/internal/ssa/gen/rulegen.go index 3a18ca252c..ed3ed75638 100644 --- a/src/cmd/compile/internal/ssa/gen/rulegen.go +++ b/src/cmd/compile/internal/ssa/gen/rulegen.go @@ -607,7 +607,7 @@ func fprint(w io.Writer, n Node) { fprint(w, n.expr) fmt.Fprintf(w, " {\nbreak\n}\n") case ast.Node: - printer.Fprint(w, emptyFset, n) + printConfig.Fprint(w, emptyFset, n) if _, ok := n.(ast.Stmt); ok { fmt.Fprintln(w) } @@ -616,6 +616,10 @@ func fprint(w io.Writer, n Node) { } } +var printConfig = printer.Config{ + Mode: printer.RawFormat, // we use go/format later, so skip work here +} + var emptyFset = token.NewFileSet() // Node can be a Statement or an ast.Expr.