Skip to content

Commit c87a78b

Browse files
committed
fasten convert traceID/spanID
1 parent f6a0e29 commit c87a78b

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go

+11-13
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package esmodeltranslator
1616

1717
import (
18+
"encoding/hex"
1819
"errors"
1920
"fmt"
2021
"strconv"
@@ -222,26 +223,23 @@ func references(links pdata.SpanLinkSlice, parentSpanID pdata.SpanID, traceID db
222223
}
223224

224225
func convertSpanID(spanID pdata.SpanID) (dbmodel.SpanID, error) {
225-
spanIDInt := tracetranslator.BytesToUInt64SpanID(spanID.Bytes())
226-
if spanIDInt == 0 {
226+
if !spanID.IsValid() {
227227
return "", errZeroSpanID
228228
}
229-
return dbmodel.SpanID(fmt.Sprintf("%016x", spanIDInt)), nil
229+
src := spanID.Bytes()
230+
dst := make([]byte, hex.EncodedLen(len(src)))
231+
hex.Encode(dst, src[:])
232+
return dbmodel.SpanID(dst), nil
230233
}
231234

232235
func convertTraceID(traceID pdata.TraceID) (dbmodel.TraceID, error) {
233-
high, low := tracetranslator.BytesToUInt64TraceID(traceID.Bytes())
234-
if low == 0 && high == 0 {
236+
if !traceID.IsValid() {
235237
return "", errZeroTraceID
236238
}
237-
return dbmodel.TraceID(traceIDToString(high, low)), nil
238-
}
239-
240-
func traceIDToString(high, low uint64) string {
241-
if high == 0 {
242-
return fmt.Sprintf("%016x", low)
243-
}
244-
return fmt.Sprintf("%016x%016x", high, low)
239+
src := traceID.Bytes()
240+
dst := make([]byte, hex.EncodedLen(len(src)))
241+
hex.Encode(dst, src[:])
242+
return dbmodel.TraceID(dst), nil
245243
}
246244

247245
func (c *Translator) process(resource pdata.Resource) *dbmodel.Process {

cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ func TestConvertSpan(t *testing.T) {
173173
}, spansData[0])
174174
}
175175

176+
func BenchmarkConvertSpanID(b *testing.B) {
177+
for i := 0; i < b.N; i++ {
178+
_, _ = convertSpanID(spanID)
179+
}
180+
}
181+
176182
func TestSpanEmptyRef(t *testing.T) {
177183
traces := traces("myservice")
178184
span := addSpan(traces, "root", traceID, spanID)

0 commit comments

Comments
 (0)