Skip to content

Commit 3bcdf80

Browse files
authored
[chore] [pdata] Avoid an allocation when copy an optional field (#13290)
Addresses #13267 (comment)
1 parent 0fb4f2e commit 3bcdf80

File tree

5 files changed

+72
-27
lines changed

5 files changed

+72
-27
lines changed

pdata/internal/cmd/pdatagen/internal/base_fields.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,10 +323,15 @@ const accessorsOptionalPrimitiveTestTemplate = `func Test{{ .structName }}_{{ .f
323323
const optionalPrimitiveSetTestTemplate = `tv.orig.{{ .fieldName }}_ = &{{ .originStructType }}{
324324
{{- .fieldName }}: {{ .testValue }}}`
325325

326-
const optionalPrimitiveCopyOrigTemplate = `if src.{{ .fieldName }}_ == nil {
327-
dest.{{ .fieldName }}_ = nil
326+
const optionalPrimitiveCopyOrigTemplate = `if src{{ .fieldName }}, ok := src.{{ .fieldName }}_.(*{{ .originStructType }}); ok {
327+
dest{{ .fieldName }}, ok := dest.{{ .fieldName }}_.(*{{ .originStructType }})
328+
if !ok {
329+
dest{{ .fieldName }} = &{{ .originStructType }}{}
330+
dest.{{ .fieldName }}_ = dest{{ .fieldName }}
331+
}
332+
dest{{ .fieldName }}.{{ .fieldName }} = src{{ .fieldName }}.{{ .fieldName }}
328333
} else {
329-
dest.{{ .fieldName }}_ = &{{ .originStructType }}{{ "{" }}{{ .fieldName }}: src.Get{{ .fieldName }}(){{ "}" }}
334+
dest.{{ .fieldName }}_ = nil
330335
}`
331336

332337
type baseField interface {

pdata/pmetric/generated_exponentialhistogramdatapoint.go

Lines changed: 24 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_histogramdatapoint.go

Lines changed: 24 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pprofile/generated_location.go

Lines changed: 8 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pprofile/generated_sample.go

Lines changed: 8 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)