mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/trace: revert internal/traceparser
The performance improvement is not as big as we hoped. Until the API is feature complete, we postpone the release and avoid added complexity. This change was prepared by reverting all the changes affected src/cmd/trace and src/internal/traceparser packages after golang.org/cl/137635, and then bringing back MMU computation APIs (originally in src/internal/traceparser) to the src/internal/trace package. Revert "cmd/trace: use new traceparser to parse the raw trace files" This reverts https://golang.org/cl/145457 (commit08816cb8d7). Revert "internal/traceparser: provide parser that uses less space and parses segments of runtime trace files" This reverts https://golang.org/cl/137635 (commitdaaf361f74). Change-Id: Ic2a068a7dbaf4053cd9674ca7bde9c58e74385b4 Reviewed-on: https://go-review.googlesource.com/c/150517 Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
47df645473
commit
6d5caf38e3
46 changed files with 197 additions and 3273 deletions
|
|
@ -5,12 +5,12 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"bufio"
|
||||
"cmd/internal/browser"
|
||||
"flag"
|
||||
"fmt"
|
||||
"html/template"
|
||||
trace "internal/traceparser"
|
||||
"internal/trace"
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
|
|
@ -115,22 +115,8 @@ func main() {
|
|||
dief("%v\n", err)
|
||||
}
|
||||
|
||||
if *debugFlag { // match go tool trace -d (except for Offset and Seq)
|
||||
f := func(ev *trace.Event) {
|
||||
desc := trace.EventDescriptions[ev.Type]
|
||||
w := new(bytes.Buffer)
|
||||
fmt.Fprintf(w, "%v %v p=%v g=%v", ev.Ts, desc.Name, ev.P, ev.G)
|
||||
for i, a := range desc.Args {
|
||||
fmt.Fprintf(w, " %v=%v", a, ev.Args[i])
|
||||
}
|
||||
for i, a := range desc.SArgs {
|
||||
fmt.Fprintf(w, " %v=%v", a, ev.SArgs[i])
|
||||
}
|
||||
fmt.Println(w.String())
|
||||
}
|
||||
for i := 0; i < len(res.Events); i++ {
|
||||
f(res.Events[i])
|
||||
}
|
||||
if *debugFlag {
|
||||
trace.Print(res.Events)
|
||||
os.Exit(0)
|
||||
}
|
||||
reportMemoryUsage("after parsing trace")
|
||||
|
|
@ -155,23 +141,36 @@ var ranges []Range
|
|||
|
||||
var loader struct {
|
||||
once sync.Once
|
||||
res *trace.Parsed
|
||||
res trace.ParseResult
|
||||
err error
|
||||
}
|
||||
|
||||
func parseTrace() (*trace.Parsed, error) {
|
||||
// parseEvents is a compatibility wrapper that returns only
|
||||
// the Events part of trace.ParseResult returned by parseTrace.
|
||||
func parseEvents() ([]*trace.Event, error) {
|
||||
res, err := parseTrace()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res.Events, err
|
||||
}
|
||||
|
||||
func parseTrace() (trace.ParseResult, error) {
|
||||
loader.once.Do(func() {
|
||||
x, err := trace.New(traceFile)
|
||||
tracef, err := os.Open(traceFile)
|
||||
if err != nil {
|
||||
loader.err = err
|
||||
loader.err = fmt.Errorf("failed to open trace file: %v", err)
|
||||
return
|
||||
}
|
||||
err = x.Parse(0, x.MaxTs, nil)
|
||||
defer tracef.Close()
|
||||
|
||||
// Parse and symbolize.
|
||||
res, err := trace.Parse(bufio.NewReader(tracef), programBinary)
|
||||
if err != nil {
|
||||
loader.err = err
|
||||
loader.err = fmt.Errorf("failed to parse trace: %v", err)
|
||||
return
|
||||
}
|
||||
loader.res = x
|
||||
loader.res = res
|
||||
})
|
||||
return loader.res, loader.err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue