MCPcopy Create free account
hub / github.com/google/pprof / preEncode

Method preEncode

profile/encode.go:30–131  ·  view source on GitHub ↗

preEncode populates the unexported fields to be used by encode (with suffix X) from the corresponding exported fields. The exported fields are cleared up to facilitate testing.

()

Source from the content-addressed store, hash-verified

28// (with suffix X) from the corresponding exported fields. The
29// exported fields are cleared up to facilitate testing.
30func (p *Profile) preEncode() {
31 strings := make(map[string]int)
32 addString(strings, "")
33
34 for _, st := range p.SampleType {
35 st.typeX = addString(strings, st.Type)
36 st.unitX = addString(strings, st.Unit)
37 }
38
39 for _, s := range p.Sample {
40 s.labelX = nil
41 var keys []string
42 for k := range s.Label {
43 keys = append(keys, k)
44 }
45 sort.Strings(keys)
46 for _, k := range keys {
47 vs := s.Label[k]
48 for _, v := range vs {
49 s.labelX = append(s.labelX,
50 label{
51 keyX: addString(strings, k),
52 strX: addString(strings, v),
53 },
54 )
55 }
56 }
57 var numKeys []string
58 for k := range s.NumLabel {
59 numKeys = append(numKeys, k)
60 }
61 sort.Strings(numKeys)
62 for _, k := range numKeys {
63 keyX := addString(strings, k)
64 vs := s.NumLabel[k]
65 units := s.NumUnit[k]
66 for i, v := range vs {
67 var unitX int64
68 if len(units) != 0 {
69 unitX = addString(strings, units[i])
70 }
71 s.labelX = append(s.labelX,
72 label{
73 keyX: keyX,
74 numX: v,
75 unitX: unitX,
76 },
77 )
78 }
79 }
80 s.locationIDX = make([]uint64, len(s.Location))
81 for i, loc := range s.Location {
82 s.locationIDX[i] = loc.ID
83 }
84 }
85
86 for _, m := range p.Mapping {
87 m.fileX = addString(strings, m.File)

Callers 1

serializeFunction · 0.80

Calls 1

addStringFunction · 0.70

Tested by

no test coverage detected