From cc47093cabcb26f6022263ff381b6c4702d12a4b Mon Sep 17 00:00:00 2001 From: Leighton Chen Date: Fri, 11 Aug 2023 14:49:17 -0700 Subject: [PATCH] fix pprof --- opentelemetry-sdk/Cargo.toml | 1 + opentelemetry-sdk/benches/context.rs | 8 ++++++++ opentelemetry-sdk/benches/key_value_map.rs | 8 ++++++++ opentelemetry-sdk/benches/span_builder.rs | 8 ++++++++ opentelemetry-sdk/benches/trace.rs | 8 ++++++++ 5 files changed, 33 insertions(+) diff --git a/opentelemetry-sdk/Cargo.toml b/opentelemetry-sdk/Cargo.toml index dd9a96434f..2c2568a3f8 100644 --- a/opentelemetry-sdk/Cargo.toml +++ b/opentelemetry-sdk/Cargo.toml @@ -38,6 +38,7 @@ rustdoc-args = ["--cfg", "docsrs"] [dev-dependencies] indexmap = "1.8" criterion = { version = "0.5", features = ["html_reports"] } +[target.'cfg(not(target_os = "windows"))'.dev-dependencies] pprof = { version = "0.12", features = ["flamegraph", "criterion"] } [features] diff --git a/opentelemetry-sdk/benches/context.rs b/opentelemetry-sdk/benches/context.rs index eb15a8e3e0..7ee4e8a076 100644 --- a/opentelemetry-sdk/benches/context.rs +++ b/opentelemetry-sdk/benches/context.rs @@ -10,6 +10,7 @@ use opentelemetry_sdk::{ export::trace::{ExportResult, SpanData, SpanExporter}, trace as sdktrace, }; +#[cfg(not(target_os = "windows"))] use pprof::criterion::{Output, PProfProfiler}; fn criterion_benchmark(c: &mut Criterion) { @@ -86,9 +87,16 @@ impl SpanExporter for NoopExporter { } } +#[cfg(not(target_os = "windows"))] criterion_group! { name = benches; config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); targets = criterion_benchmark } +#[cfg(target_os = "windows")] +criterion_group! { + name = benches; + config = Criterion::default(); + targets = criterion_benchmark +} criterion_main!(benches); diff --git a/opentelemetry-sdk/benches/key_value_map.rs b/opentelemetry-sdk/benches/key_value_map.rs index 9a6fac5999..4deb1c4872 100644 --- a/opentelemetry-sdk/benches/key_value_map.rs +++ b/opentelemetry-sdk/benches/key_value_map.rs @@ -4,6 +4,7 @@ use criterion::{ use indexmap::IndexMap; use opentelemetry_api::{Key, KeyValue, Value}; use opentelemetry_sdk::trace::EvictedHashMap; +#[cfg(not(target_os = "windows"))] use pprof::criterion::{Output, PProfProfiler}; use std::iter::Iterator; @@ -200,9 +201,16 @@ const MAP_KEYS: [&str; 64] = [ "key.56", "key.57", "key.58", "key.59", "key.60", "key.61", "key.62", "key.63", "key.64", ]; +#[cfg(not(target_os = "windows"))] criterion_group! { name = benches; config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); targets = criterion_benchmark } +#[cfg(target_os = "windows")] +criterion_group! { + name = benches; + config = Criterion::default(); + targets = criterion_benchmark +} criterion_main!(benches); diff --git a/opentelemetry-sdk/benches/span_builder.rs b/opentelemetry-sdk/benches/span_builder.rs index cd82fe1ca6..d38485dca8 100644 --- a/opentelemetry-sdk/benches/span_builder.rs +++ b/opentelemetry-sdk/benches/span_builder.rs @@ -8,6 +8,7 @@ use opentelemetry_sdk::{ export::trace::{ExportResult, SpanData, SpanExporter}, trace as sdktrace, }; +#[cfg(not(target_os = "windows"))] use pprof::criterion::{Output, PProfProfiler}; fn criterion_benchmark(c: &mut Criterion) { @@ -99,9 +100,16 @@ const MAP_KEYS: [&str; 64] = [ "key.56", "key.57", "key.58", "key.59", "key.60", "key.61", "key.62", "key.63", "key.64", ]; +#[cfg(not(target_os = "windows"))] criterion_group! { name = benches; config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); targets = criterion_benchmark } +#[cfg(target_os = "windows")] +criterion_group! { + name = benches; + config = Criterion::default(); + targets = criterion_benchmark +} criterion_main!(benches); diff --git a/opentelemetry-sdk/benches/trace.rs b/opentelemetry-sdk/benches/trace.rs index d45ed69dfa..7f0e793746 100644 --- a/opentelemetry-sdk/benches/trace.rs +++ b/opentelemetry-sdk/benches/trace.rs @@ -8,6 +8,7 @@ use opentelemetry_sdk::{ export::trace::{ExportResult, SpanData, SpanExporter}, trace as sdktrace, }; +#[cfg(not(target_os = "windows"))] use pprof::criterion::{Output, PProfProfiler}; fn criterion_benchmark(c: &mut Criterion) { @@ -89,9 +90,16 @@ fn trace_benchmark_group(c: &mut Criterion, name: &str group.finish(); } +#[cfg(not(target_os = "windows"))] criterion_group! { name = benches; config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); targets = criterion_benchmark } +#[cfg(target_os = "windows")] +criterion_group! { + name = benches; + config = Criterion::default(); + targets = criterion_benchmark +} criterion_main!(benches);