blob: ca3b4aebbaa84869abdf1b71b52f0efe6c425ac3 [file] [log] [blame]
Fumitoshi Ukai6ac7f692015-04-15 17:13:51 +09001package main
2
3import (
4 "fmt"
5 "sort"
6 "time"
7)
8
9type statsData struct {
10 Name string
11 Count int
12 Longest time.Duration
13 Total time.Duration
14}
15
16var stats = map[string]statsData{}
17
18func addStats(name string, v Value, t time.Time) {
19 if !katiStatsFlag {
20 return
21 }
22 d := time.Now().Sub(t)
23 key := fmt.Sprintf("%s:%s", name, v.String())
24 s := stats[key]
25 if d > s.Longest {
26 s.Longest = d
27 }
28 s.Total += d
29 s.Count++
30 stats[key] = s
31}
32
33func dumpStats() {
34 if !katiStatsFlag {
35 return
36 }
37 var sv byTotalTime
38 for k, v := range stats {
39 v.Name = k
40 sv = append(sv, v)
41 }
42 sort.Sort(sv)
Fumitoshi Ukai47f401f2015-04-30 17:29:50 +090043 fmt.Println("count,longest(ns),total(ns),longest,total,name")
Fumitoshi Ukai6ac7f692015-04-15 17:13:51 +090044 for _, s := range sv {
Fumitoshi Ukai47f401f2015-04-30 17:29:50 +090045 fmt.Printf("%d,%d,%d,%v,%v,%s\n", s.Count, s.Longest, s.Total, s.Longest, s.Total, s.Name)
Fumitoshi Ukai6ac7f692015-04-15 17:13:51 +090046 }
47}
48
49type byTotalTime []statsData
50
51func (b byTotalTime) Len() int { return len(b) }
52func (b byTotalTime) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
53func (b byTotalTime) Less(i, j int) bool {
54 return b[i].Total > b[j].Total
55}