diff options
| author | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-06-15 14:50:07 +0900 |
|---|---|---|
| committer | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-06-15 16:52:50 +0900 |
| commit | 8341013b6fbefc2b7269701eac4c5dabe24d42bf (patch) | |
| tree | 8c67f7d339076015e1af0028badfbfb74b3e8300 /stats.go | |
| parent | f543f4db924daf39eb0e604636c7839175a35abd (diff) | |
add findleaves support
Diffstat (limited to 'stats.go')
| -rw-r--r-- | stats.go | 52 |
1 files changed, 24 insertions, 28 deletions
@@ -33,6 +33,8 @@ type traceEventT struct { const ( traceEventMain = iota + 1 traceEventFindCache + traceEventFindCacheLeaves + traceEventFindCacheFiles ) var traceEvent traceEventT @@ -59,52 +61,46 @@ type event struct { emit bool } -func (t *traceEventT) begin(name string, v string, tid int) event { - t.mu.Lock() - defer t.mu.Unlock() +func (t *traceEventT) begin(name string, v Value, tid int) event { var e event e.tid = tid e.t = time.Now() if t.f != nil || katiEvalStatsFlag { e.name = name - e.v = v + e.v = v.String() } if t.f != nil { e.emit = name == "include" || name == "shell" || name == "findcache" if e.emit { - if t.pid == 0 { - t.pid = os.Getpid() - } else { - fmt.Fprintf(t.f, ",\n") - } - ts := e.t.Sub(t.t0) - fmt.Fprintf(t.f, `{"pid":%d,"tid":%d,"ts":%d,"ph":"B","cat":%q,"name":%q,"args":{}}`, - t.pid, - e.tid, - ts.Nanoseconds()/1e3, - e.name, - e.v, - ) + t.emit("B", e, e.t.Sub(t.t0)) } } return e } -func (t *traceEventT) end(e event) { +func (t *traceEventT) emit(ph string, e event, ts time.Duration) { t.mu.Lock() defer t.mu.Unlock() + + if t.pid == 0 { + t.pid = os.Getpid() + } else { + fmt.Fprintf(t.f, ",\n") + } + fmt.Fprintf(t.f, `{"pid":%d,"tid":%d,"ts":%d,"ph":%q,"cat":%q,"name":%q,"args":{}}`, + t.pid, + e.tid, + ts.Nanoseconds()/1e3, + ph, + e.name, + e.v, + ) +} + +func (t *traceEventT) end(e event) { if t.f != nil { - now := time.Now() - ts := now.Sub(t.t0) if e.emit { - fmt.Fprint(t.f, ",\n") - fmt.Fprintf(t.f, `{"pid":%d,"tid":%d,"ts":%d,"ph":"E","cat":%q,"name":%q}`, - t.pid, - e.tid, - ts.Nanoseconds()/1e3, - e.name, - e.v, - ) + t.emit("E", e, time.Since(t.t0)) } } addStats(e.name, e.v, e.t) |
