Skip to content

Commit 2ae410f

Browse files
committed
Fix histogram collect benchmark
1 parent 3742953 commit 2ae410f

File tree

1 file changed

+34
-15
lines changed

1 file changed

+34
-15
lines changed

opentelemetry-sdk/benches/metric.rs

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -370,22 +370,41 @@ fn histograms(c: &mut Criterion) {
370370
);
371371
}
372372
}
373-
group.bench_function("CollectOne", |b| benchmark_collect_histogram(b, 1));
374-
group.bench_function("CollectFive", |b| benchmark_collect_histogram(b, 5));
375-
group.bench_function("CollectTen", |b| benchmark_collect_histogram(b, 10));
376-
group.bench_function("CollectTwentyFive", |b| benchmark_collect_histogram(b, 25));
373+
374+
for metrics_count in [1, 20] {
375+
for (attribute_sets_count, attribs_count) in [(1, 0), (1, 10), (500, 10)] {
376+
group.bench_function(
377+
format!("Collect_{metrics_count}Metrics_{attribute_sets_count}AttribSets_{attribs_count}Attribs"),
378+
|b| benchmark_collect_histogram(b, metrics_count, attribute_sets_count, attribs_count),
379+
);
380+
}
381+
}
377382
}
378383

379-
fn benchmark_collect_histogram(b: &mut Bencher, n: usize) {
384+
fn benchmark_collect_histogram(
385+
b: &mut Bencher,
386+
metrics_count: usize,
387+
attribute_sets_count: usize,
388+
attribs_count: usize,
389+
) {
380390
let r = SharedReader(Arc::new(ManualReader::default()));
381-
let mtr = SdkMeterProvider::builder()
382-
.with_reader(r.clone())
383-
.build()
384-
.meter("sdk/metric/bench/histogram");
385-
386-
for i in 0..n {
387-
let h = mtr.u64_histogram(format!("fake_data_{i}")).build();
388-
h.record(1, &[]);
391+
392+
let provider = SdkMeterProvider::builder().with_reader(r.clone()).build();
393+
let mtr = provider.meter("sdk/metric/bench/histogram");
394+
let mut rng = rand::thread_rng();
395+
396+
for m in 0..metrics_count {
397+
let h = mtr.u64_histogram(format!("fake_data_{m}")).build();
398+
for _att in 0..attribute_sets_count {
399+
let mut attributes: Vec<KeyValue> = Vec::new();
400+
for _i in 0..attribs_count {
401+
attributes.push(KeyValue::new(
402+
format!("K{}", rng.gen_range::<i32, _>(0..20)),
403+
format!("V{}", rng.gen_range::<i32, _>(0..20)),
404+
))
405+
}
406+
h.record(1, &attributes)
407+
}
389408
}
390409

391410
let mut rm = ResourceMetrics {
@@ -394,8 +413,8 @@ fn benchmark_collect_histogram(b: &mut Bencher, n: usize) {
394413
};
395414

396415
b.iter(|| {
397-
let _ = r.collect(&mut rm);
398-
assert_eq!(rm.scope_metrics[0].metrics.len(), n);
416+
r.collect(&mut rm).unwrap();
417+
assert_eq!(rm.scope_metrics[0].metrics.len(), metrics_count);
399418
})
400419
}
401420

0 commit comments

Comments
 (0)