Files
rustfs/crates/io-metrics/benches/metrics_pipeline.rs
T

44 lines
1.5 KiB
Rust

use criterion::{Criterion, criterion_group, criterion_main};
use rustfs_io_metrics::{MetricsCollector, PerformanceMetrics, record_get_object_request_started};
use std::hint::black_box;
use std::sync::Arc;
use std::time::Duration;
fn bench_record_get_object_request_started(c: &mut Criterion) {
c.bench_function("record_get_object_request_started", |b| b.iter(record_get_object_request_started));
}
fn bench_update_concurrent_requests(c: &mut Criterion) {
let metrics = PerformanceMetrics::new();
c.bench_function("performance_metrics_update_concurrent_requests", |b| {
b.iter(|| metrics.update_concurrent_requests(black_box(64)))
});
}
fn bench_metrics_collector_record_io_operation(c: &mut Criterion) {
let runtime = tokio::runtime::Builder::new_current_thread()
.enable_all()
.build()
.expect("build tokio runtime for io-metrics benchmark");
let collector = MetricsCollector::new(Arc::new(PerformanceMetrics::new()), 256);
c.bench_function("metrics_collector_record_io_operation", |b| {
b.iter(|| {
runtime.block_on(collector.record_io_operation(
black_box(64 * 1024),
Duration::from_micros(black_box(250)),
black_box(true),
))
})
});
}
criterion_group!(
benches,
bench_record_get_object_request_started,
bench_update_concurrent_requests,
bench_metrics_collector_record_io_operation
);
criterion_main!(benches);