aboutsummaryrefslogtreecommitdiff
path: root/stats.go
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-15 14:50:07 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-15 16:52:50 +0900
commit8341013b6fbefc2b7269701eac4c5dabe24d42bf (patch)
tree8c67f7d339076015e1af0028badfbfb74b3e8300 /stats.go
parentf543f4db924daf39eb0e604636c7839175a35abd (diff)
add findleaves support
Diffstat (limited to 'stats.go')
-rw-r--r--stats.go52
1 files changed, 24 insertions, 28 deletions
diff --git a/stats.go b/stats.go
index e3f2921..9c52f2a 100644
--- a/stats.go
+++ b/stats.go
@@ -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)