@@ -4,6 +4,7 @@ type Flamebearer struct {
4
4
Names []string `json:"names"`
5
5
Levels [][]int `json:"levels"`
6
6
NumTicks int `json:"numTicks"`
7
+ MaxSelf int `json:"maxSelf"`
7
8
SpyName string `json:"spyName"`
8
9
SampleRate int `json:"sampleRate"`
9
10
}
@@ -16,6 +17,7 @@ func (t *Tree) FlamebearerStruct(maxNodes int) *Flamebearer {
16
17
Names : []string {},
17
18
Levels : [][]int {},
18
19
NumTicks : int (t .Samples ()),
20
+ MaxSelf : int (0 ),
19
21
}
20
22
21
23
nodes := []* treeNode {t .root }
@@ -41,6 +43,9 @@ func (t *Tree) FlamebearerStruct(maxNodes int) *Flamebearer {
41
43
if i , ok = nameLocationCache [name ]; ! ok {
42
44
i = len (res .Names )
43
45
nameLocationCache [name ] = i
46
+ if i == 0 {
47
+ name = "total"
48
+ }
44
49
res .Names = append (res .Names , name )
45
50
}
46
51
@@ -56,7 +61,10 @@ func (t *Tree) FlamebearerStruct(maxNodes int) *Flamebearer {
56
61
// prevW := res.Levels[level][len(res.Levels[level])-2]
57
62
// barIndex -= prevX + prevW
58
63
// }
59
- res .Levels [level ] = append ([]int {xOffset , int (tn .Total ), i }, res .Levels [level ]... )
64
+ if res .MaxSelf < int (tn .Self ) {
65
+ res .MaxSelf = int (tn .Self )
66
+ }
67
+ res .Levels [level ] = append ([]int {xOffset , int (tn .Total ), int (tn .Self ), i }, res .Levels [level ]... )
60
68
61
69
xOffset += int (tn .Self )
62
70
otherTotal := uint64 (0 )
@@ -85,7 +93,7 @@ func (t *Tree) FlamebearerStruct(maxNodes int) *Flamebearer {
85
93
}
86
94
for _ , l := range res .Levels {
87
95
prev := 0
88
- for i := 0 ; i < len (l ); i += 3 {
96
+ for i := 0 ; i < len (l ); i += 4 {
89
97
l [i ] -= prev
90
98
prev += l [i ] + l [i + 1 ]
91
99
}
0 commit comments