Skip to content

Commit

Permalink
web/api: use stream encoder for embedded labels
Browse files Browse the repository at this point in the history
This is much more efficient.
  • Loading branch information
bboreham committed Jul 13, 2023
1 parent b3120a5 commit 52eb6f1
Showing 1 changed file with 3 additions and 18 deletions.
21 changes: 3 additions & 18 deletions web/api/v1/json_codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,7 @@ func marshalSeriesJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) {
s := *((*promql.Series)(ptr))
stream.WriteObjectStart()
stream.WriteObjectField(`metric`)
m, err := s.Metric.MarshalJSON()
if err != nil {
stream.Error = err
return
}
stream.SetBuffer(append(stream.Buffer(), m...))
marshalLabelsJSON(s.Metric, stream)

for i, p := range s.Floats {
stream.WriteMore()
Expand Down Expand Up @@ -131,12 +126,7 @@ func marshalSampleJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) {
s := *((*promql.Sample)(ptr))
stream.WriteObjectStart()
stream.WriteObjectField(`metric`)
m, err := s.Metric.MarshalJSON()
if err != nil {
stream.Error = err
return
}
stream.SetBuffer(append(stream.Buffer(), m...))
marshalLabelsJSON(s.Metric, stream)
stream.WriteMore()
if s.H == nil {
stream.WriteObjectField(`value`)
Expand Down Expand Up @@ -196,12 +186,7 @@ func marshalExemplarJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) {

// "labels" key.
stream.WriteObjectField(`labels`)
lbls, err := p.Labels.MarshalJSON()
if err != nil {
stream.Error = err
return
}
stream.SetBuffer(append(stream.Buffer(), lbls...))
marshalLabelsJSON(p.Labels, stream)

// "value" key.
stream.WriteMore()
Expand Down

0 comments on commit 52eb6f1

Please sign in to comment.