diff --git a/sdk/metric/benchmark_test.go b/sdk/metric/benchmark_test.go index d73759cbde2..74933896294 100644 --- a/sdk/metric/benchmark_test.go +++ b/sdk/metric/benchmark_test.go @@ -45,11 +45,21 @@ func BenchmarkSyncMeasure(b *testing.B) { } } +func exponentialAggregationSelector(ik InstrumentKind) Aggregation { + if ik == InstrumentKindHistogram { + return AggregationBase2ExponentialHistogram{MaxScale: 20, MaxSize: 160} + } + return AggregationDefault{} +} + func benchSyncViews(views ...View) func(*testing.B) { ctx := context.Background() rdr := NewManualReader() provider := NewMeterProvider(WithReader(rdr), WithView(views...)) meter := provider.Meter("benchSyncViews") + expRdr := NewManualReader(WithAggregationSelector(exponentialAggregationSelector)) + expProvider := NewMeterProvider(WithReader(expRdr), WithView(views...)) + expMeter := expProvider.Meter("benchSyncViews") return func(b *testing.B) { iCtr, err := meter.Int64Counter("int64-counter") assert.NoError(b, err) @@ -104,6 +114,24 @@ func benchSyncViews(views ...View) func(*testing.B) { return func() { fHist.Record(ctx, 1, o...) } } }())) + + expIHist, err := expMeter.Int64Histogram("exponential-int64-histogram") + assert.NoError(b, err) + b.Run("ExponentialInt64Histogram", benchMeasAttrs(func() measF { + return func(s attribute.Set) func() { + o := []metric.RecordOption{metric.WithAttributeSet(s)} + return func() { expIHist.Record(ctx, 1, o...) } + } + }())) + + expFHist, err := expMeter.Float64Histogram("exponential-float64-histogram") + assert.NoError(b, err) + b.Run("ExponentialFloat64Histogram", benchMeasAttrs(func() measF { + return func(s attribute.Set) func() { + o := []metric.RecordOption{metric.WithAttributeSet(s)} + return func() { expFHist.Record(ctx, 1, o...) } + } + }())) } }