attribute: avoid reflection for small fixed-array slice types in hashKV#8203
Closed
alliasgher wants to merge 3 commits intoopen-telemetry:mainfrom
Closed
attribute: avoid reflection for small fixed-array slice types in hashKV#8203alliasgher wants to merge 3 commits intoopen-telemetry:mainfrom
alliasgher wants to merge 3 commits intoopen-telemetry:mainfrom
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #8200.
Applies the same type-switch fast path used for
SLICEin #8166 to the four existing slice types:BOOLSLICE,INT64SLICE,FLOAT64SLICE, andSTRINGSLICE.The slice values for len 0-3 are stored as
[N]Tfixed arrays bySliceValue. Type-asserting directly on those avoids all reflection overhead for the most common lengths. Longer slices fall through to the existingreflect.ValueOfpath unchanged.Benchmarks
BenchmarkHashKVsSlicesexercises only slice-type attributes (len 2-3, which hit the fixed-array fast path):Micro-benchmark of the per-element path for
[2]bool:The overall
BenchmarkHashKVsis unchanged since it includes many non-slice types, but the slice-specific path is significantly faster.