Skip to content

perf(tracing): improvements#17474

Draft
KowalskiThomas wants to merge 7 commits intomainfrom
kowalski/perf-tracing-avoid-multi-lookups
Draft

perf(tracing): improvements#17474
KowalskiThomas wants to merge 7 commits intomainfrom
kowalski/perf-tracing-avoid-multi-lookups

Conversation

@KowalskiThomas
Copy link
Copy Markdown
Contributor

Description

Testing

Risks

Additional Notes

@cit-pr-commenter-54b7da
Copy link
Copy Markdown

cit-pr-commenter-54b7da bot commented Apr 12, 2026

Codeowners resolved as

ddtrace/_trace/span.py                                                  @DataDog/apm-sdk-capabilities-python @DataDog/apm-core-python
ddtrace/propagation/http.py                                             @DataDog/apm-sdk-capabilities-python

@datadog-datadog-prod-us1-2

This comment has been minimized.

@KowalskiThomas KowalskiThomas added the changelog/no-changelog A changelog entry is not required for this PR. label Apr 12, 2026
@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Apr 12, 2026

Performance SLOs

Comparing candidate kowalski/perf-tracing-avoid-multi-lookups (1e7068f) with baseline main (240631e)

❌ Test Failures (1 suite)
tracer - 5/6

❌ large

Time: ❌ 56.596ms (SLO: <33.950ms 📈 +66.7%) vs baseline: +0.5%

Memory: ✅ 37.788MB (SLO: <39.250MB -3.7%) vs baseline: +5.0%


✅ medium

Time: ✅ 3.358ms (SLO: <3.500ms -4.0%) vs baseline: +1.1%

Memory: ✅ 36.235MB (SLO: <38.750MB -6.5%) vs baseline: +4.9%


✅ small

Time: ✅ 385.229µs (SLO: <390.000µs 🟡 -1.2%) vs baseline: +4.1%

Memory: ✅ 36.156MB (SLO: <38.750MB -6.7%) vs baseline: +4.6%

🟡 Near SLO Breach (4 suites)
🟡 djangosimple - 30/30

✅ appsec

Time: ✅ 21.015ms (SLO: <22.300ms -5.8%) vs baseline: +0.2%

Memory: ✅ 71.387MB (SLO: <73.500MB -2.9%) vs baseline: +4.9%


✅ exception-replay-enabled

Time: ✅ 1.367ms (SLO: <1.450ms -5.7%) vs baseline: -0.3%

Memory: ✅ 69.626MB (SLO: <71.500MB -2.6%) vs baseline: +4.8%


✅ iast

Time: ✅ 21.050ms (SLO: <22.250ms -5.4%) vs baseline: +0.2%

Memory: ✅ 71.279MB (SLO: <75.000MB -5.0%) vs baseline: +4.9%


✅ profiler

Time: ✅ 15.272ms (SLO: <16.550ms -7.7%) vs baseline: +0.1%

Memory: ✅ 60.231MB (SLO: <61.000MB 🟡 -1.3%) vs baseline: +4.9%


✅ resource-renaming

Time: ✅ 20.784ms (SLO: <21.750ms -4.4%) vs baseline: -0.4%

Memory: ✅ 71.371MB (SLO: <73.500MB -2.9%) vs baseline: +5.1%


✅ span-code-origin

Time: ✅ 20.472ms (SLO: <28.200ms 📉 -27.4%) vs baseline: +1.1%

Memory: ✅ 71.431MB (SLO: <75.000MB -4.8%) vs baseline: +5.1%


✅ tracer

Time: ✅ 20.911ms (SLO: <21.750ms -3.9%) vs baseline: -0.2%

Memory: ✅ 71.290MB (SLO: <75.000MB -4.9%) vs baseline: +4.8%


✅ tracer-and-profiler

Time: ✅ 21.020ms (SLO: <23.500ms 📉 -10.6%) vs baseline: ~same

Memory: ✅ 73.401MB (SLO: <75.000MB -2.1%) vs baseline: +5.1%


✅ tracer-dont-create-db-spans

Time: ✅ 21.057ms (SLO: <21.500ms -2.1%) vs baseline: ~same

Memory: ✅ 71.348MB (SLO: <75.000MB -4.9%) vs baseline: +4.9%


✅ tracer-minimal

Time: ✅ 18.016ms (SLO: <18.500ms -2.6%) vs baseline: +0.5%

Memory: ✅ 71.368MB (SLO: <75.000MB -4.8%) vs baseline: +5.0%


✅ tracer-native

Time: ✅ 20.874ms (SLO: <21.750ms -4.0%) vs baseline: ~same

Memory: ✅ 71.259MB (SLO: <72.500MB 🟡 -1.7%) vs baseline: +4.8%


✅ tracer-no-caches

Time: ✅ 18.907ms (SLO: <19.650ms -3.8%) vs baseline: +0.2%

Memory: ✅ 71.291MB (SLO: <75.000MB -4.9%) vs baseline: +4.7%


✅ tracer-no-databases

Time: ✅ 20.616ms (SLO: <21.100ms -2.3%) vs baseline: -0.3%

Memory: ✅ 71.313MB (SLO: <75.000MB -4.9%) vs baseline: +4.8%


✅ tracer-no-middleware

Time: ✅ 20.727ms (SLO: <21.500ms -3.6%) vs baseline: -0.3%

Memory: ✅ 71.292MB (SLO: <75.000MB -4.9%) vs baseline: +4.9%


✅ tracer-no-templates

Time: ✅ 20.972ms (SLO: <22.000ms -4.7%) vs baseline: +0.7%

Memory: ✅ 71.272MB (SLO: <73.500MB -3.0%) vs baseline: +4.8%


🟡 otelspan - 22/22

✅ add-event

Time: ✅ 40.553ms (SLO: <47.150ms 📉 -14.0%) vs baseline: ~same

Memory: ✅ 41.215MB (SLO: <47.000MB 📉 -12.3%) vs baseline: +4.8%


✅ add-metrics

Time: ✅ 222.034ms (SLO: <344.800ms 📉 -35.6%) vs baseline: +0.3%

Memory: ✅ 45.605MB (SLO: <47.500MB -4.0%) vs baseline: +4.3%


✅ add-tags

Time: ✅ 277.182ms (SLO: <330.000ms 📉 -16.0%) vs baseline: +0.2%

Memory: ✅ 45.679MB (SLO: <47.500MB -3.8%) vs baseline: +4.7%


✅ get-context

Time: ✅ 83.499ms (SLO: <92.350ms -9.6%) vs baseline: ~same

Memory: ✅ 41.484MB (SLO: <46.500MB 📉 -10.8%) vs baseline: +4.9%


✅ is-recording

Time: ✅ 38.940ms (SLO: <44.500ms 📉 -12.5%) vs baseline: ~same

Memory: ✅ 41.077MB (SLO: <47.500MB 📉 -13.5%) vs baseline: +4.7%


✅ record-exception

Time: ✅ 61.201ms (SLO: <67.650ms -9.5%) vs baseline: +0.5%

Memory: ✅ 41.792MB (SLO: <47.000MB 📉 -11.1%) vs baseline: +4.9%


✅ set-status

Time: ✅ 44.914ms (SLO: <50.400ms 📉 -10.9%) vs baseline: ~same

Memory: ✅ 41.020MB (SLO: <47.000MB 📉 -12.7%) vs baseline: +4.5%


✅ start

Time: ✅ 39.972ms (SLO: <44.500ms 📉 -10.2%) vs baseline: +3.7%

Memory: ✅ 41.231MB (SLO: <47.000MB 📉 -12.3%) vs baseline: +5.1%


✅ start-finish

Time: ✅ 90.353ms (SLO: <92.000ms 🟡 -1.8%) vs baseline: +0.2%

Memory: ✅ 38.751MB (SLO: <46.500MB 📉 -16.7%) vs baseline: +4.9%


✅ start-finish-telemetry

Time: ✅ 91.890ms (SLO: <93.000ms 🟡 -1.2%) vs baseline: ~same

Memory: ✅ 38.673MB (SLO: <46.500MB 📉 -16.8%) vs baseline: +4.6%


✅ update-name

Time: ✅ 40.133ms (SLO: <45.150ms 📉 -11.1%) vs baseline: +0.4%

Memory: ✅ 41.199MB (SLO: <47.000MB 📉 -12.3%) vs baseline: +4.8%


🟡 recursivecomputation - 8/8

✅ deep

Time: ✅ 312.120ms (SLO: <320.950ms -2.8%) vs baseline: ~same

Memory: ✅ 37.454MB (SLO: <38.750MB -3.3%) vs baseline: +4.9%


✅ deep-profiled

Time: ✅ 328.281ms (SLO: <359.150ms -8.6%) vs baseline: -0.3%

Memory: ✅ 43.667MB (SLO: <46.000MB -5.1%) vs baseline: +4.6%


✅ medium

Time: ✅ 7.352ms (SLO: <7.450ms 🟡 -1.3%) vs baseline: -0.3%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ shallow

Time: ✅ 1.039ms (SLO: <1.050ms 🟡 -1.1%) vs baseline: +1.9%

Memory: ✅ 36.176MB (SLO: <38.000MB -4.8%) vs baseline: +4.8%


🟡 span - 26/26

✅ add-event

Time: ✅ 19.402ms (SLO: <22.500ms 📉 -13.8%) vs baseline: -0.3%

Memory: ✅ 38.390MB (SLO: <53.000MB 📉 -27.6%) vs baseline: +4.2%


✅ add-metrics

Time: ✅ 76.388ms (SLO: <93.500ms 📉 -18.3%) vs baseline: -0.5%

Memory: ✅ 42.979MB (SLO: <53.000MB 📉 -18.9%) vs baseline: +5.0%


✅ add-tags

Time: ✅ 148.570ms (SLO: <155.000ms -4.1%) vs baseline: +0.9%

Memory: ✅ 42.872MB (SLO: <53.000MB 📉 -19.1%) vs baseline: +4.8%


✅ get-context

Time: ✅ 18.640ms (SLO: <20.500ms -9.1%) vs baseline: +0.4%

Memory: ✅ 38.330MB (SLO: <53.000MB 📉 -27.7%) vs baseline: +4.9%


✅ is-recording

Time: ✅ 18.766ms (SLO: <20.500ms -8.5%) vs baseline: +0.4%

Memory: ✅ 38.274MB (SLO: <53.000MB 📉 -27.8%) vs baseline: +4.8%


✅ record-exception

Time: ✅ 38.325ms (SLO: <41.000ms -6.5%) vs baseline: +0.5%

Memory: ✅ 38.825MB (SLO: <53.000MB 📉 -26.7%) vs baseline: +4.8%


✅ set-status

Time: ✅ 20.551ms (SLO: <22.000ms -6.6%) vs baseline: +0.3%

Memory: ✅ 38.309MB (SLO: <53.000MB 📉 -27.7%) vs baseline: +4.8%


✅ start

Time: ✅ 19.526ms (SLO: <20.500ms -4.7%) vs baseline: +5.2%

Memory: ✅ 38.343MB (SLO: <53.000MB 📉 -27.7%) vs baseline: +5.1%


✅ start-finish

Time: ✅ 58.046ms (SLO: <58.500ms 🟡 -0.8%) vs baseline: ~same

Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.9%


✅ start-finish-telemetry

Time: ✅ 59.260ms (SLO: <60.000ms 🟡 -1.2%) vs baseline: -0.3%

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +5.1%


✅ start-finish-traceid128

Time: ✅ 60.707ms (SLO: <62.000ms -2.1%) vs baseline: +0.3%

Memory: ✅ 36.137MB (SLO: <38.000MB -4.9%) vs baseline: +4.7%


✅ start-traceid128

Time: ✅ 18.610ms (SLO: <22.500ms 📉 -17.3%) vs baseline: ~same

Memory: ✅ 38.340MB (SLO: <53.000MB 📉 -27.7%) vs baseline: +4.6%


✅ update-name

Time: ✅ 19.219ms (SLO: <22.000ms 📉 -12.6%) vs baseline: +0.1%

Memory: ✅ 38.458MB (SLO: <53.000MB 📉 -27.4%) vs baseline: +4.9%

⚠️ Unstable Tests (1 suite)
⚠️ coreapiscenario - 10/10 (1 unstable)

⚠️ context_with_data_listeners

Time: ⚠️ 13.580µs (SLO: <20.000µs 📉 -32.1%) vs baseline: ~same

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.7%


✅ context_with_data_no_listeners

Time: ✅ 3.555µs (SLO: <10.000µs 📉 -64.5%) vs baseline: -1.1%

Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +4.6%


✅ get_item_exists

Time: ✅ 0.583µs (SLO: <10.000µs 📉 -94.2%) vs baseline: -0.9%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ get_item_missing

Time: ✅ 0.635µs (SLO: <10.000µs 📉 -93.6%) vs baseline: -0.5%

Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +4.9%


✅ set_item

Time: ✅ 24.413µs (SLO: <30.000µs 📉 -18.6%) vs baseline: ~same

Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +4.8%

✅ All Tests Passing (12 suites)
errortrackingdjangosimple - 6/6

✅ errortracking-enabled-all

Time: ✅ 17.470ms (SLO: <19.850ms 📉 -12.0%) vs baseline: +0.5%

Memory: ✅ 70.987MB (SLO: <75.000MB -5.4%) vs baseline: +5.4%


✅ errortracking-enabled-user

Time: ✅ 17.395ms (SLO: <19.400ms 📉 -10.3%) vs baseline: -0.3%

Memory: ✅ 71.009MB (SLO: <75.000MB -5.3%) vs baseline: +5.3%


✅ tracer-enabled

Time: ✅ 17.544ms (SLO: <19.450ms -9.8%) vs baseline: ~same

Memory: ✅ 70.655MB (SLO: <75.000MB -5.8%) vs baseline: +4.9%


errortrackingflasksqli - 6/6

✅ errortracking-enabled-all

Time: ✅ 2.116ms (SLO: <2.300ms -8.0%) vs baseline: -0.1%

Memory: ✅ 58.296MB (SLO: <60.000MB -2.8%) vs baseline: +5.2%


✅ errortracking-enabled-user

Time: ✅ 2.124ms (SLO: <2.250ms -5.6%) vs baseline: +0.2%

Memory: ✅ 58.098MB (SLO: <60.000MB -3.2%) vs baseline: +4.8%


✅ tracer-enabled

Time: ✅ 2.120ms (SLO: <2.300ms -7.8%) vs baseline: +0.2%

Memory: ✅ 58.085MB (SLO: <60.000MB -3.2%) vs baseline: +4.7%


flasksimple - 18/18

✅ appsec-get

Time: ✅ 3.418ms (SLO: <4.750ms 📉 -28.0%) vs baseline: +0.3%

Memory: ✅ 58.590MB (SLO: <66.500MB 📉 -11.9%) vs baseline: +4.9%


✅ appsec-post

Time: ✅ 2.902ms (SLO: <6.750ms 📉 -57.0%) vs baseline: ~same

Memory: ✅ 58.531MB (SLO: <66.500MB 📉 -12.0%) vs baseline: +4.9%


✅ appsec-telemetry

Time: ✅ 3.441ms (SLO: <4.750ms 📉 -27.6%) vs baseline: +1.5%

Memory: ✅ 58.521MB (SLO: <66.500MB 📉 -12.0%) vs baseline: +4.8%


✅ debugger

Time: ✅ 1.886ms (SLO: <2.000ms -5.7%) vs baseline: +0.1%

Memory: ✅ 49.382MB (SLO: <51.500MB -4.1%) vs baseline: +5.0%


✅ iast-get

Time: ✅ 1.875ms (SLO: <2.000ms -6.2%) vs baseline: +0.2%

Memory: ✅ 46.001MB (SLO: <49.000MB -6.1%) vs baseline: +4.9%


✅ profiler

Time: ✅ 1.917ms (SLO: <2.100ms -8.7%) vs baseline: -0.3%

Memory: ✅ 52.017MB (SLO: <53.500MB -2.8%) vs baseline: +4.9%


✅ resource-renaming

Time: ✅ 3.383ms (SLO: <3.650ms -7.3%) vs baseline: -0.2%

Memory: ✅ 58.504MB (SLO: <60.000MB -2.5%) vs baseline: +4.9%


✅ tracer

Time: ✅ 3.402ms (SLO: <3.650ms -6.8%) vs baseline: +0.3%

Memory: ✅ 58.584MB (SLO: <60.000MB -2.4%) vs baseline: +4.9%


✅ tracer-native

Time: ✅ 3.405ms (SLO: <3.650ms -6.7%) vs baseline: +0.2%

Memory: ✅ 58.570MB (SLO: <60.000MB -2.4%) vs baseline: +5.0%


flasksqli - 6/6

✅ appsec-enabled

Time: ✅ 2.117ms (SLO: <4.200ms 📉 -49.6%) vs baseline: ~same

Memory: ✅ 58.182MB (SLO: <66.000MB 📉 -11.8%) vs baseline: +4.6%


✅ iast-enabled

Time: ✅ 2.124ms (SLO: <2.800ms 📉 -24.1%) vs baseline: ~same

Memory: ✅ 58.171MB (SLO: <62.500MB -6.9%) vs baseline: +4.7%


✅ tracer-enabled

Time: ✅ 2.112ms (SLO: <2.250ms -6.1%) vs baseline: -0.2%

Memory: ✅ 58.303MB (SLO: <60.000MB -2.8%) vs baseline: +4.8%


forktime - 4/4

✅ baseline

Time: ✅ 1.936ms (SLO: <3.000ms 📉 -35.5%) vs baseline: +4.9%

Memory: ✅ 29.314MB (SLO: <33.000MB 📉 -11.2%) vs baseline: +5.0%


✅ configured

Time: ✅ 9.295ms (SLO: <13.000ms 📉 -28.5%) vs baseline: ~same

Memory: ✅ 58.420MB (SLO: <60.000MB -2.6%) vs baseline: +4.9%


httppropagationextract - 60/60

✅ all_styles_all_headers

Time: ✅ 81.338µs (SLO: <100.000µs 📉 -18.7%) vs baseline: +4.4%

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +4.9%


✅ b3_headers

Time: ✅ 13.037µs (SLO: <20.000µs 📉 -34.8%) vs baseline: +1.2%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +5.0%


✅ b3_single_headers

Time: ✅ 11.955µs (SLO: <20.000µs 📉 -40.2%) vs baseline: -0.8%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +5.1%


✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Time: ✅ 60.858µs (SLO: <80.000µs 📉 -23.9%) vs baseline: ~same

Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.7%


✅ datadog_tracecontext_tracestate_propagated_on_trace_id_match

Time: ✅ 63.848µs (SLO: <80.000µs 📉 -20.2%) vs baseline: +0.2%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.8%


✅ empty_headers

Time: ✅ 1.303µs (SLO: <10.000µs 📉 -87.0%) vs baseline: +0.3%

Memory: ✅ 36.353MB (SLO: <38.000MB -4.3%) vs baseline: +5.0%


✅ full_t_id_datadog_headers

Time: ✅ 21.788µs (SLO: <30.000µs 📉 -27.4%) vs baseline: -0.3%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +5.0%


✅ invalid_priority_header

Time: ✅ 5.945µs (SLO: <10.000µs 📉 -40.5%) vs baseline: +0.1%

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +4.9%


✅ invalid_span_id_header

Time: ✅ 5.948µs (SLO: <10.000µs 📉 -40.5%) vs baseline: +0.5%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +5.1%


✅ invalid_tags_header

Time: ✅ 5.950µs (SLO: <10.000µs 📉 -40.5%) vs baseline: +0.9%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.7%


✅ invalid_trace_id_header

Time: ✅ 5.996µs (SLO: <10.000µs 📉 -40.0%) vs baseline: +1.1%

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +4.7%


✅ large_header_no_matches

Time: ✅ 26.875µs (SLO: <30.000µs 📉 -10.4%) vs baseline: -0.3%

Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +5.0%


✅ large_valid_headers_all

Time: ✅ 27.983µs (SLO: <40.000µs 📉 -30.0%) vs baseline: -0.4%

Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.0%


✅ medium_header_no_matches

Time: ✅ 9.296µs (SLO: <20.000µs 📉 -53.5%) vs baseline: +0.7%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +4.8%


✅ medium_valid_headers_all

Time: ✅ 10.684µs (SLO: <20.000µs 📉 -46.6%) vs baseline: ~same

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +4.7%


✅ none_propagation_style

Time: ✅ 1.404µs (SLO: <10.000µs 📉 -86.0%) vs baseline: +0.3%

Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +5.1%


✅ tracecontext_headers

Time: ✅ 32.821µs (SLO: <40.000µs 📉 -17.9%) vs baseline: -0.2%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ valid_headers_all

Time: ✅ 5.958µs (SLO: <10.000µs 📉 -40.4%) vs baseline: +0.7%

Memory: ✅ 36.372MB (SLO: <38.000MB -4.3%) vs baseline: +5.0%


✅ valid_headers_basic

Time: ✅ 5.543µs (SLO: <10.000µs 📉 -44.6%) vs baseline: +1.3%

Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.1%


✅ wsgi_empty_headers

Time: ✅ 1.303µs (SLO: <10.000µs 📉 -87.0%) vs baseline: ~same

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +5.0%


✅ wsgi_invalid_priority_header

Time: ✅ 5.979µs (SLO: <10.000µs 📉 -40.2%) vs baseline: +0.2%

Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +5.1%


✅ wsgi_invalid_span_id_header

Time: ✅ 1.312µs (SLO: <10.000µs 📉 -86.9%) vs baseline: +1.0%

Memory: ✅ 36.176MB (SLO: <38.000MB -4.8%) vs baseline: +4.7%


✅ wsgi_invalid_tags_header

Time: ✅ 6.017µs (SLO: <10.000µs 📉 -39.8%) vs baseline: +0.8%

Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.0%


✅ wsgi_invalid_trace_id_header

Time: ✅ 6.027µs (SLO: <10.000µs 📉 -39.7%) vs baseline: +0.1%

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +4.9%


✅ wsgi_large_header_no_matches

Time: ✅ 28.283µs (SLO: <40.000µs 📉 -29.3%) vs baseline: +0.9%

Memory: ✅ 36.451MB (SLO: <38.000MB -4.1%) vs baseline: +5.1%


✅ wsgi_large_valid_headers_all

Time: ✅ 29.267µs (SLO: <40.000µs 📉 -26.8%) vs baseline: +0.2%

Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.0%


✅ wsgi_medium_header_no_matches

Time: ✅ 9.499µs (SLO: <20.000µs 📉 -52.5%) vs baseline: -0.4%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ wsgi_medium_valid_headers_all

Time: ✅ 11.037µs (SLO: <20.000µs 📉 -44.8%) vs baseline: +1.2%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.8%


✅ wsgi_valid_headers_all

Time: ✅ 6.003µs (SLO: <10.000µs 📉 -40.0%) vs baseline: +0.7%

Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.9%


✅ wsgi_valid_headers_basic

Time: ✅ 5.554µs (SLO: <10.000µs 📉 -44.5%) vs baseline: +0.5%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.7%


httppropagationinject - 16/16

✅ ids_only

Time: ✅ 20.775µs (SLO: <30.000µs 📉 -30.7%) vs baseline: +3.7%

Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +5.1%


✅ with_all

Time: ✅ 27.034µs (SLO: <40.000µs 📉 -32.4%) vs baseline: +0.1%

Memory: ✅ 36.333MB (SLO: <38.000MB -4.4%) vs baseline: +4.8%


✅ with_dd_origin

Time: ✅ 23.793µs (SLO: <30.000µs 📉 -20.7%) vs baseline: -0.6%

Memory: ✅ 36.274MB (SLO: <38.000MB -4.5%) vs baseline: +5.0%


✅ with_priority_and_origin

Time: ✅ 23.238µs (SLO: <40.000µs 📉 -41.9%) vs baseline: -0.3%

Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.7%


✅ with_sampling_priority

Time: ✅ 20.256µs (SLO: <30.000µs 📉 -32.5%) vs baseline: +0.7%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +5.1%


✅ with_tags

Time: ✅ 25.251µs (SLO: <40.000µs 📉 -36.9%) vs baseline: +0.7%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.5%


✅ with_tags_invalid

Time: ✅ 26.565µs (SLO: <40.000µs 📉 -33.6%) vs baseline: -0.1%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ with_tags_max_size

Time: ✅ 25.758µs (SLO: <40.000µs 📉 -35.6%) vs baseline: +0.5%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.7%


otelsdkspan - 24/24

✅ add-event

Time: ✅ 40.640ms (SLO: <42.000ms -3.2%) vs baseline: +0.7%

Memory: ✅ 39.066MB (SLO: <40.750MB -4.1%) vs baseline: +5.0%


✅ add-link

Time: ✅ 36.618ms (SLO: <38.550ms -5.0%) vs baseline: +0.1%

Memory: ✅ 38.850MB (SLO: <40.750MB -4.7%) vs baseline: +5.3%


✅ add-metrics

Time: ✅ 217.316ms (SLO: <232.000ms -6.3%) vs baseline: -1.2%

Memory: ✅ 39.007MB (SLO: <40.750MB -4.3%) vs baseline: +4.6%


✅ add-tags

Time: ✅ 211.685ms (SLO: <221.600ms -4.5%) vs baseline: -0.7%

Memory: ✅ 39.066MB (SLO: <40.750MB -4.1%) vs baseline: +4.9%


✅ get-context

Time: ✅ 29.170ms (SLO: <31.300ms -6.8%) vs baseline: +0.6%

Memory: ✅ 38.732MB (SLO: <40.750MB -5.0%) vs baseline: +5.3%


✅ is-recording

Time: ✅ 29.250ms (SLO: <31.000ms -5.6%) vs baseline: +0.5%

Memory: ✅ 38.614MB (SLO: <40.750MB -5.2%) vs baseline: +5.0%


✅ record-exception

Time: ✅ 63.286ms (SLO: <65.850ms -3.9%) vs baseline: ~same

Memory: ✅ 39.066MB (SLO: <40.750MB -4.1%) vs baseline: +5.2%


✅ set-status

Time: ✅ 32.015ms (SLO: <34.150ms -6.3%) vs baseline: +0.5%

Memory: ✅ 38.751MB (SLO: <40.750MB -4.9%) vs baseline: +4.9%


✅ start

Time: ✅ 29.280ms (SLO: <30.150ms -2.9%) vs baseline: +1.7%

Memory: ✅ 39.027MB (SLO: <40.750MB -4.2%) vs baseline: +6.1%


✅ start-finish

Time: ✅ 33.915ms (SLO: <35.350ms -4.1%) vs baseline: -0.6%

Memory: ✅ 38.614MB (SLO: <40.750MB -5.2%) vs baseline: +4.6%


✅ start-finish-telemetry

Time: ✅ 33.809ms (SLO: <35.450ms -4.6%) vs baseline: -0.6%

Memory: ✅ 39.066MB (SLO: <40.750MB -4.1%) vs baseline: +5.0%


✅ update-name

Time: ✅ 31.102ms (SLO: <33.400ms -6.9%) vs baseline: ~same

Memory: ✅ 38.574MB (SLO: <40.750MB -5.3%) vs baseline: +4.7%


ratelimiter - 11/11

✅ defaults

Time: ✅ 2.358µs (SLO: <10.000µs 📉 -76.4%) vs baseline: ~same

Memory: ✅ 36.530MB (SLO: <38.000MB -3.9%) vs baseline: +4.8%


✅ high_rate_limit

Time: ✅ 2.400µs (SLO: <10.000µs 📉 -76.0%) vs baseline: -0.5%


✅ long_window

Time: ✅ 2.371µs (SLO: <10.000µs 📉 -76.3%) vs baseline: +0.1%

Memory: ✅ 36.530MB (SLO: <38.000MB -3.9%)


✅ low_rate_limit

Time: ✅ 2.359µs (SLO: <10.000µs 📉 -76.4%) vs baseline: -0.2%

Memory: ✅ 36.549MB (SLO: <38.000MB -3.8%)


✅ no_rate_limit

Time: ✅ 0.832µs (SLO: <10.000µs 📉 -91.7%) vs baseline: -0.3%

Memory: ✅ 36.549MB (SLO: <38.000MB -3.8%) vs baseline: +4.9%


✅ short_window

Time: ✅ 2.491µs (SLO: <10.000µs 📉 -75.1%) vs baseline: -0.2%

Memory: ✅ 36.549MB (SLO: <38.000MB -3.8%) vs baseline: +5.0%


samplingrules - 8/8

✅ average_match

Time: ✅ 169.541µs (SLO: <300.000µs 📉 -43.5%) vs baseline: +0.4%

Memory: ✅ 36.117MB (SLO: <38.000MB -5.0%) vs baseline: +4.7%


✅ high_match

Time: ✅ 216.816µs (SLO: <480.000µs 📉 -54.8%) vs baseline: +0.2%

Memory: ✅ 36.196MB (SLO: <38.000MB -4.7%) vs baseline: +4.7%


✅ low_match

Time: ✅ 120.116µs (SLO: <130.000µs -7.6%) vs baseline: +0.2%

Memory: ✅ 701.650MB (SLO: <780.000MB 📉 -10.0%) vs baseline: +4.9%


✅ very_low_match

Time: ✅ 3.131ms (SLO: <9.000ms 📉 -65.2%) vs baseline: +0.1%

Memory: ✅ 78.778MB (SLO: <85.000MB -7.3%) vs baseline: +4.9%


sethttpmeta - 32/32

✅ all-disabled

Time: ✅ 10.628µs (SLO: <20.000µs 📉 -46.9%) vs baseline: +0.8%

Memory: ✅ 37.120MB (SLO: <38.750MB -4.2%) vs baseline: +4.8%


✅ all-enabled

Time: ✅ 39.691µs (SLO: <50.000µs 📉 -20.6%) vs baseline: +1.8%

Memory: ✅ 37.120MB (SLO: <38.750MB -4.2%) vs baseline: +5.1%


✅ collectipvariant_exists

Time: ✅ 39.902µs (SLO: <50.000µs 📉 -20.2%) vs baseline: ~same

Memory: ✅ 37.297MB (SLO: <38.750MB -3.8%) vs baseline: +5.2%


✅ no-collectipvariant

Time: ✅ 39.123µs (SLO: <50.000µs 📉 -21.8%) vs baseline: -0.2%

Memory: ✅ 37.179MB (SLO: <38.750MB -4.1%) vs baseline: +5.1%


✅ no-useragentvariant

Time: ✅ 37.880µs (SLO: <50.000µs 📉 -24.2%) vs baseline: -0.2%

Memory: ✅ 37.120MB (SLO: <38.750MB -4.2%) vs baseline: +4.6%


✅ obfuscation-no-query

Time: ✅ 39.512µs (SLO: <50.000µs 📉 -21.0%) vs baseline: -0.3%

Memory: ✅ 37.238MB (SLO: <38.750MB -3.9%) vs baseline: +5.0%


✅ obfuscation-regular-case-explicit-query

Time: ✅ 75.723µs (SLO: <90.000µs 📉 -15.9%) vs baseline: ~same

Memory: ✅ 37.473MB (SLO: <38.750MB -3.3%) vs baseline: +4.8%


✅ obfuscation-regular-case-implicit-query

Time: ✅ 76.486µs (SLO: <90.000µs 📉 -15.0%) vs baseline: +0.3%

Memory: ✅ 37.493MB (SLO: <38.750MB -3.2%) vs baseline: +5.0%


✅ obfuscation-send-querystring-disabled

Time: ✅ 154.765µs (SLO: <170.000µs -9.0%) vs baseline: ~same

Memory: ✅ 37.473MB (SLO: <38.750MB -3.3%) vs baseline: +4.7%


✅ obfuscation-worst-case-explicit-query

Time: ✅ 148.752µs (SLO: <160.000µs -7.0%) vs baseline: -0.3%

Memory: ✅ 37.493MB (SLO: <38.750MB -3.2%) vs baseline: +4.9%


✅ obfuscation-worst-case-implicit-query

Time: ✅ 155.109µs (SLO: <170.000µs -8.8%) vs baseline: ~same

Memory: ✅ 37.552MB (SLO: <38.750MB -3.1%) vs baseline: +5.1%


✅ useragentvariant_exists_1

Time: ✅ 38.492µs (SLO: <50.000µs 📉 -23.0%) vs baseline: -0.3%

Memory: ✅ 37.198MB (SLO: <38.750MB -4.0%) vs baseline: +4.9%


✅ useragentvariant_exists_2

Time: ✅ 39.543µs (SLO: <50.000µs 📉 -20.9%) vs baseline: -0.6%

Memory: ✅ 37.218MB (SLO: <38.750MB -4.0%) vs baseline: +4.7%


✅ useragentvariant_exists_3

Time: ✅ 38.938µs (SLO: <50.000µs 📉 -22.1%) vs baseline: -0.7%

Memory: ✅ 37.198MB (SLO: <38.750MB -4.0%) vs baseline: +4.7%


✅ useragentvariant_not_exists_1

Time: ✅ 38.494µs (SLO: <50.000µs 📉 -23.0%) vs baseline: -0.4%

Memory: ✅ 37.198MB (SLO: <38.750MB -4.0%) vs baseline: +4.9%


✅ useragentvariant_not_exists_2

Time: ✅ 38.575µs (SLO: <50.000µs 📉 -22.9%) vs baseline: -0.2%

Memory: ✅ 37.179MB (SLO: <38.750MB -4.1%) vs baseline: +4.9%


telemetryaddmetric - 30/30

✅ 1-count-metric-1-times

Time: ✅ 2.341µs (SLO: <20.000µs 📉 -88.3%) vs baseline: +9.0%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +5.0%


✅ 1-count-metrics-100-times

Time: ✅ 156.193µs (SLO: <220.000µs 📉 -29.0%) vs baseline: +1.1%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ 1-distribution-metric-1-times

Time: ✅ 2.431µs (SLO: <20.000µs 📉 -87.8%) vs baseline: ~same

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.8%


✅ 1-distribution-metrics-100-times

Time: ✅ 164.360µs (SLO: <230.000µs 📉 -28.5%) vs baseline: +0.6%

Memory: ✅ 36.313MB (SLO: <38.000MB -4.4%) vs baseline: +5.2%


✅ 1-gauge-metric-1-times

Time: ✅ 1.975µs (SLO: <20.000µs 📉 -90.1%) vs baseline: -0.2%

Memory: ✅ 36.215MB (SLO: <38.000MB -4.7%) vs baseline: +4.9%


✅ 1-gauge-metrics-100-times

Time: ✅ 136.992µs (SLO: <150.000µs -8.7%) vs baseline: -0.8%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +5.0%


✅ 1-rate-metric-1-times

Time: ✅ 2.286µs (SLO: <20.000µs 📉 -88.6%) vs baseline: -1.1%

Memory: ✅ 36.176MB (SLO: <38.000MB -4.8%) vs baseline: +4.7%


✅ 1-rate-metrics-100-times

Time: ✅ 168.919µs (SLO: <250.000µs 📉 -32.4%) vs baseline: -0.4%

Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +5.2%


✅ 100-count-metrics-100-times

Time: ✅ 15.492ms (SLO: <22.000ms 📉 -29.6%) vs baseline: -0.1%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ 100-distribution-metrics-100-times

Time: ✅ 1.737ms (SLO: <2.550ms 📉 -31.9%) vs baseline: +0.5%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.9%


✅ 100-gauge-metrics-100-times

Time: ✅ 1.413ms (SLO: <1.550ms -8.8%) vs baseline: +0.2%

Memory: ✅ 36.255MB (SLO: <38.000MB -4.6%) vs baseline: +4.7%


✅ 100-rate-metrics-100-times

Time: ✅ 1.741ms (SLO: <2.550ms 📉 -31.7%) vs baseline: -1.0%

Memory: ✅ 36.235MB (SLO: <38.000MB -4.6%) vs baseline: +4.7%


✅ flush-1-metric

Time: ✅ 3.607µs (SLO: <20.000µs 📉 -82.0%) vs baseline: -0.2%

Memory: ✅ 36.648MB (SLO: <38.000MB -3.6%) vs baseline: +4.9%


✅ flush-100-metrics

Time: ✅ 175.632µs (SLO: <250.000µs 📉 -29.7%) vs baseline: +0.4%

Memory: ✅ 36.608MB (SLO: <38.000MB -3.7%) vs baseline: +4.9%


✅ flush-1000-metrics

Time: ✅ 2.195ms (SLO: <2.500ms 📉 -12.2%) vs baseline: ~same

Memory: ✅ 37.021MB (SLO: <38.750MB -4.5%) vs baseline: +4.7%

ℹ️ Scenarios Missing SLO Configuration (26 scenarios)

The following scenarios exist in candidate data but have no SLO thresholds configured:

  • coreapiscenario-core_dispatch_listeners
  • coreapiscenario-core_dispatch_no_listeners
  • coreapiscenario-core_dispatch_with_results_listeners
  • coreapiscenario-core_dispatch_with_results_no_listeners
  • djangosimple-baseline
  • errortrackingdjangosimple-baseline
  • errortrackingflasksqli-baseline
  • flasksimple-baseline
  • flasksqli-baseline
  • sethttpmeta-obfuscation-disabled
  • startup-baseline
  • startup-baseline_django
  • startup-baseline_flask
  • startup-ddtrace_run
  • startup-ddtrace_run_appsec
  • startup-ddtrace_run_profiling
  • startup-ddtrace_run_runtime_metrics
  • startup-ddtrace_run_send_span
  • startup-ddtrace_run_telemetry_disabled
  • startup-ddtrace_run_telemetry_enabled
  • startup-import_ddtrace
  • startup-import_ddtrace_auto
  • startup-import_ddtrace_auto_django
  • startup-import_ddtrace_auto_flask
  • startup-import_ddtrace_django
  • startup-import_ddtrace_flask

@KowalskiThomas KowalskiThomas force-pushed the kowalski/perf-tracing-avoid-multi-lookups branch from 6fbaae3 to 46115a0 Compare April 13, 2026 14:39
@KowalskiThomas KowalskiThomas force-pushed the kowalski/perf-tracing-avoid-multi-lookups branch from 46115a0 to 1e7068f Compare April 14, 2026 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant