mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-24 05:06:28 +00:00
44 lines
1.5 KiB
Rust
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);
|