Files
jcoffey-dev 1e7e8dfd48
ci / fork-checks (pull_request) Skipped
ci / build (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 7m26s
Vendor upstream's opentelemetry-rust fork at the pinned commit
2026-10-27 22:55:35 -07:00

84 lines
2.4 KiB
Rust
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
The benchmark results:
criterion = "0.5.1"
Hardware: Apple M4 Pro
Total Number of Cores:   14 (10 performance and 4 efficiency)
| Test | Average time|
|---------------------------------------------|-------------|
| exporter_disabled_simple_processor | 5.3 ns |
*/
use criterion::{criterion_group, criterion_main, Criterion};
use opentelemetry::logs::{Logger, LoggerProvider};
use opentelemetry_sdk::error::OTelSdkResult;
use opentelemetry_sdk::logs::{
LogBatch, LogExporter, LogProcessor, SdkLoggerProvider, SimpleLogProcessor,
};
use opentelemetry_sdk::Resource;
#[cfg(not(target_os = "windows"))]
use pprof::criterion::{Output, PProfProfiler};
#[derive(Debug)]
struct NoopExporter;
impl LogExporter for NoopExporter {
async fn export(&self, _: LogBatch<'_>) -> OTelSdkResult {
Ok(())
}
#[inline]
fn event_enabled(
&self,
_level: opentelemetry::logs::Severity,
_target: &str,
_name: Option<&str>,
) -> bool {
false
}
fn set_resource(&mut self, _: &Resource) {}
}
fn benchmark_exporter_enabled_false<T>(c: &mut Criterion, name: &str, processor: T)
where
T: LogProcessor + Send + Sync + 'static,
{
let provider = SdkLoggerProvider::builder()
.with_log_processor(processor)
.build();
let logger = provider.logger("test_logger");
c.bench_function(name, |b| {
b.iter(|| {
std::hint::black_box(logger.event_enabled(
opentelemetry::logs::Severity::Debug,
"target",
Some("name"),
));
});
});
}
fn criterion_benchmark(c: &mut Criterion) {
let simple = SimpleLogProcessor::new(NoopExporter);
benchmark_exporter_enabled_false(c, "exporter_disabled_simple_processor", simple);
}
#[cfg(not(target_os = "windows"))]
criterion_group! {
name = benches;
config = Criterion::default()
.warm_up_time(std::time::Duration::from_secs(1))
.measurement_time(std::time::Duration::from_secs(2))
.with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
targets = criterion_benchmark
}
#[cfg(target_os = "windows")]
criterion_group! {
name = benches;
config = Criterion::default()
.warm_up_time(std::time::Duration::from_secs(1))
.measurement_time(std::time::Duration::from_secs(2));
targets = criterion_benchmark
}
criterion_main!(benches);