-
Couldn't load subscription status.
- Fork 468
perf: optimize hot path for http propagation #15065
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This commit optimizes the `HTTPPropagator.extract` method, which is a critical hot path that runs on every request. The changes focus on reducing object allocations and avoiding unnecessary work in common scenarios. * Avoids allocation on sucessful path: We no longer create an empty `Context` object unconditionally. If one is found later, we avoid 1 allocation. * Adds single-context fast path: In multi-style extraction mode, if only one context is found (a common case), we now use it directly instead of calling the more expensive `_resolve_contexts` method. * Optimizes baggage tagging: The loop for applying baggage as tags is optimized by hoisting attribute lookups (`.meta`) and method calls (`.get_all_baggage_items`) out of the loop, reducing overhead per-key. * Cleaner baggage logic: Baggage extraction is now explicitly handled once at the end, simplifying the logic within the "extract-first" and "multi-extract" paths.
|
|
Bootstrap import analysisComparison of import times between this PR and base. SummaryThe average import time from this PR is: 240 ± 4 ms. The average import time from base is: 241 ± 4 ms. The import time difference between this PR and base is: -1.5 ± 0.2 ms. Import time breakdownThe following import paths have shrunk:
|
Performance SLOsComparing candidate quentin/try (f28a8ea) with baseline main (9c2acd7) 📈 Performance Regressions (4 suites)📈 iast_aspects - 40/40✅ re_expand_aspectTime: ✅ 32.199µs (SLO: <40.000µs 📉 -19.5%) vs baseline: ~same Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ re_expand_noaspectTime: ✅ 28.819µs (SLO: <40.000µs 📉 -28.0%) vs baseline: +0.9% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7% ✅ re_findall_aspectTime: ✅ 2.921µs (SLO: <10.000µs 📉 -70.8%) vs baseline: +0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ re_findall_noaspectTime: ✅ 1.426µs (SLO: <10.000µs 📉 -85.7%) vs baseline: +1.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ re_finditer_aspectTime: ✅ 4.449µs (SLO: <10.000µs 📉 -55.5%) vs baseline: ~same Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.6% ✅ re_finditer_noaspectTime: ✅ 1.416µs (SLO: <10.000µs 📉 -85.8%) vs baseline: +0.2% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% ✅ re_fullmatch_aspectTime: ✅ 2.665µs (SLO: <10.000µs 📉 -73.4%) vs baseline: -0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ re_fullmatch_noaspectTime: ✅ 1.293µs (SLO: <10.000µs 📉 -87.1%) vs baseline: -0.8% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ re_group_aspectTime: ✅ 3.137µs (SLO: <10.000µs 📉 -68.6%) vs baseline: +1.1% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_group_noaspectTime: ✅ 1.594µs (SLO: <10.000µs 📉 -84.1%) vs baseline: ~same Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ re_groups_aspectTime: ✅ 3.287µs (SLO: <10.000µs 📉 -67.1%) vs baseline: +0.3% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ re_groups_noaspectTime: ✅ 1.705µs (SLO: <10.000µs 📉 -82.9%) vs baseline: ~same Memory: ✅ 38.024MB (SLO: <39.000MB -2.5%) vs baseline: +4.7% ✅ re_match_aspectTime: ✅ 3.197µs (SLO: <10.000µs 📉 -68.0%) vs baseline: 📈 +18.1% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.1% ✅ re_match_noaspectTime: ✅ 1.287µs (SLO: <10.000µs 📉 -87.1%) vs baseline: -1.2% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.6% ✅ re_search_aspectTime: ✅ 2.559µs (SLO: <10.000µs 📉 -74.4%) vs baseline: +0.1% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_search_noaspectTime: ✅ 1.201µs (SLO: <10.000µs 📉 -88.0%) vs baseline: +0.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_sub_aspectTime: ✅ 3.415µs (SLO: <10.000µs 📉 -65.9%) vs baseline: +1.4% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7% ✅ re_sub_noaspectTime: ✅ 1.544µs (SLO: <10.000µs 📉 -84.6%) vs baseline: +0.3% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ re_subn_aspectTime: ✅ 3.891µs (SLO: <10.000µs 📉 -61.1%) vs baseline: +5.4% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ re_subn_noaspectTime: ✅ 1.613µs (SLO: <10.000µs 📉 -83.9%) vs baseline: +0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% 📈 iastaspects - 118/118✅ add_aspectTime: ✅ 0.404µs (SLO: <10.000µs 📉 -96.0%) vs baseline: ~same Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ add_inplace_aspectTime: ✅ 0.405µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +0.3% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7% ✅ add_inplace_noaspectTime: ✅ 0.322µs (SLO: <10.000µs 📉 -96.8%) vs baseline: +1.9% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.6% ✅ add_noaspectTime: ✅ 0.279µs (SLO: <10.000µs 📉 -97.2%) vs baseline: +0.6% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ bytearray_aspectTime: ✅ 1.364µs (SLO: <10.000µs 📉 -86.4%) vs baseline: -0.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ bytearray_extend_aspectTime: ✅ 1.521µs (SLO: <10.000µs 📉 -84.8%) vs baseline: +0.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ bytearray_extend_noaspectTime: ✅ 0.622µs (SLO: <10.000µs 📉 -93.8%) vs baseline: +2.0% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ bytearray_noaspectTime: ✅ 0.484µs (SLO: <10.000µs 📉 -95.2%) vs baseline: -0.4% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ bytes_aspectTime: ✅ 1.311µs (SLO: <10.000µs 📉 -86.9%) vs baseline: +1.7% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% ✅ bytes_noaspectTime: ✅ 0.493µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.4% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ bytesio_aspectTime: ✅ 1.356µs (SLO: <10.000µs 📉 -86.4%) vs baseline: -0.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ bytesio_noaspectTime: ✅ 0.494µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.9% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ capitalize_aspectTime: ✅ 0.737µs (SLO: <10.000µs 📉 -92.6%) vs baseline: ~same Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ capitalize_noaspectTime: ✅ 0.436µs (SLO: <10.000µs 📉 -95.6%) vs baseline: -0.5% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ casefold_aspectTime: ✅ 0.736µs (SLO: <10.000µs 📉 -92.6%) vs baseline: -0.3% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.6% ✅ casefold_noaspectTime: ✅ 0.370µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +0.7% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ decode_aspectTime: ✅ 0.720µs (SLO: <10.000µs 📉 -92.8%) vs baseline: -1.1% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ decode_noaspectTime: ✅ 0.420µs (SLO: <10.000µs 📉 -95.8%) vs baseline: +0.8% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ encode_aspectTime: ✅ 0.707µs (SLO: <10.000µs 📉 -92.9%) vs baseline: -0.5% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ encode_noaspectTime: ✅ 0.405µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +0.6% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ format_aspectTime: ✅ 3.407µs (SLO: <10.000µs 📉 -65.9%) vs baseline: +0.3% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ format_map_aspectTime: ✅ 3.681µs (SLO: <10.000µs 📉 -63.2%) vs baseline: -0.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ format_map_noaspectTime: ✅ 0.778µs (SLO: <10.000µs 📉 -92.2%) vs baseline: +0.7% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ format_noaspectTime: ✅ 0.601µs (SLO: <10.000µs 📉 -94.0%) vs baseline: ~same Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ index_aspectTime: ✅ 0.360µs (SLO: <10.000µs 📉 -96.4%) vs baseline: +2.1% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +5.0% ✅ index_noaspectTime: ✅ 0.275µs (SLO: <10.000µs 📉 -97.3%) vs baseline: -0.8% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ join_aspectTime: ✅ 1.362µs (SLO: <10.000µs 📉 -86.4%) vs baseline: ~same Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ join_noaspectTime: ✅ 0.491µs (SLO: <10.000µs 📉 -95.1%) vs baseline: +0.1% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.8% ✅ ljust_aspectTime: ✅ 2.576µs (SLO: <20.000µs 📉 -87.1%) vs baseline: ~same Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ ljust_noaspectTime: ✅ 0.408µs (SLO: <10.000µs 📉 -95.9%) vs baseline: +1.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ lower_aspectTime: ✅ 2.198µs (SLO: <10.000µs 📉 -78.0%) vs baseline: +0.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.7% ✅ lower_noaspectTime: ✅ 0.366µs (SLO: <10.000µs 📉 -96.3%) vs baseline: -0.6% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ lstrip_aspectTime: ✅ 2.550µs (SLO: <20.000µs 📉 -87.3%) vs baseline: 📈 +15.2% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ lstrip_noaspectTime: ✅ 0.384µs (SLO: <10.000µs 📉 -96.2%) vs baseline: ~same Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ modulo_aspectTime: ✅ 0.992µs (SLO: <10.000µs 📉 -90.1%) vs baseline: -0.2% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.8% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 1.602µs (SLO: <10.000µs 📉 -84.0%) vs baseline: +2.3% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ modulo_aspect_for_bytesTime: ✅ 0.976µs (SLO: <10.000µs 📉 -90.2%) vs baseline: -0.9% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 1.232µs (SLO: <10.000µs 📉 -87.7%) vs baseline: +1.2% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +4.9% ✅ modulo_noaspectTime: ✅ 0.629µs (SLO: <10.000µs 📉 -93.7%) vs baseline: -0.6% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ replace_aspectTime: ✅ 5.613µs (SLO: <10.000µs 📉 -43.9%) vs baseline: 📈 +13.6% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ replace_noaspectTime: ✅ 0.459µs (SLO: <10.000µs 📉 -95.4%) vs baseline: +0.1% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ repr_aspectTime: ✅ 0.910µs (SLO: <10.000µs 📉 -90.9%) vs baseline: ~same Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ repr_noaspectTime: ✅ 0.410µs (SLO: <10.000µs 📉 -95.9%) vs baseline: -1.0% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ rstrip_aspectTime: ✅ 1.904µs (SLO: <20.000µs 📉 -90.5%) vs baseline: -0.8% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ rstrip_noaspectTime: ✅ 0.380µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ slice_aspectTime: ✅ 0.494µs (SLO: <10.000µs 📉 -95.1%) vs baseline: -0.4% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ slice_noaspectTime: ✅ 0.447µs (SLO: <10.000µs 📉 -95.5%) vs baseline: +0.2% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ stringio_aspectTime: ✅ 1.720µs (SLO: <10.000µs 📉 -82.8%) vs baseline: +9.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ stringio_noaspectTime: ✅ 0.723µs (SLO: <10.000µs 📉 -92.8%) vs baseline: +0.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ strip_aspectTime: ✅ 2.174µs (SLO: <20.000µs 📉 -89.1%) vs baseline: -1.9% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ strip_noaspectTime: ✅ 0.381µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -1.7% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% ✅ swapcase_aspectTime: ✅ 2.403µs (SLO: <10.000µs 📉 -76.0%) vs baseline: ~same Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ swapcase_noaspectTime: ✅ 0.536µs (SLO: <10.000µs 📉 -94.6%) vs baseline: +0.8% Memory: ✅ 38.044MB (SLO: <39.000MB -2.5%) vs baseline: +4.7% ✅ title_aspectTime: ✅ 2.465µs (SLO: <10.000µs 📉 -75.4%) vs baseline: +6.1% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ title_noaspectTime: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%) vs baseline: -0.6% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ translate_aspectTime: ✅ 3.244µs (SLO: <10.000µs 📉 -67.6%) vs baseline: +0.7% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ translate_noaspectTime: ✅ 1.045µs (SLO: <10.000µs 📉 -89.5%) vs baseline: -0.2% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.8% ✅ upper_aspectTime: ✅ 2.181µs (SLO: <10.000µs 📉 -78.2%) vs baseline: -0.7% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ upper_noaspectTime: ✅ 0.373µs (SLO: <10.000µs 📉 -96.3%) vs baseline: +0.3% Memory: ✅ 38.004MB (SLO: <39.000MB -2.6%) vs baseline: +4.6% 📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 4.326µs (SLO: <10.000µs 📉 -56.7%) vs baseline: +3.1% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ ospathbasename_noaspectTime: ✅ 1.084µs (SLO: <10.000µs 📉 -89.2%) vs baseline: +0.4% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ ospathjoin_aspectTime: ✅ 7.146µs (SLO: <10.000µs 📉 -28.5%) vs baseline: 📈 +16.2% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ ospathjoin_noaspectTime: ✅ 2.321µs (SLO: <10.000µs 📉 -76.8%) vs baseline: +0.1% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ ospathnormcase_aspectTime: ✅ 3.495µs (SLO: <10.000µs 📉 -65.1%) vs baseline: +0.7% Memory: ✅ 38.122MB (SLO: <39.000MB -2.3%) vs baseline: +5.0% ✅ ospathnormcase_noaspectTime: ✅ 0.570µs (SLO: <10.000µs 📉 -94.3%) vs baseline: -0.9% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +4.9% ✅ ospathsplit_aspectTime: ✅ 5.672µs (SLO: <10.000µs 📉 -43.3%) vs baseline: 📈 +18.5% Memory: ✅ 38.103MB (SLO: <39.000MB -2.3%) vs baseline: +4.9% ✅ ospathsplit_noaspectTime: ✅ 1.605µs (SLO: <10.000µs 📉 -84.0%) vs baseline: +0.6% Memory: ✅ 38.063MB (SLO: <39.000MB -2.4%) vs baseline: +4.9% ✅ ospathsplitdrive_aspectTime: ✅ 4.157µs (SLO: <10.000µs 📉 -58.4%) vs baseline: 📈 +13.4% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ ospathsplitdrive_noaspectTime: ✅ 0.698µs (SLO: <10.000µs 📉 -93.0%) vs baseline: +0.6% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% ✅ ospathsplitext_aspectTime: ✅ 4.637µs (SLO: <10.000µs 📉 -53.6%) vs baseline: +1.3% Memory: ✅ 38.083MB (SLO: <39.000MB -2.4%) vs baseline: +4.7% ✅ ospathsplitext_noaspectTime: ✅ 1.392µs (SLO: <10.000µs 📉 -86.1%) vs baseline: +0.3% Memory: ✅ 38.142MB (SLO: <39.000MB -2.2%) vs baseline: +5.0% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 3.025µs (SLO: <20.000µs 📉 -84.9%) vs baseline: +3.2% Memory: ✅ 32.224MB (SLO: <34.000MB -5.2%) vs baseline: +4.9% ✅ 1-count-metrics-100-timesTime: ✅ 201.458µs (SLO: <220.000µs -8.4%) vs baseline: +0.4% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.9% ✅ 1-distribution-metric-1-timesTime: ✅ 3.601µs (SLO: <20.000µs 📉 -82.0%) vs baseline: 📈 +10.1% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.9% ✅ 1-distribution-metrics-100-timesTime: ✅ 214.279µs (SLO: <220.000µs -2.6%) vs baseline: +0.2% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8% ✅ 1-gauge-metric-1-timesTime: ✅ 2.483µs (SLO: <20.000µs 📉 -87.6%) vs baseline: 📈 +14.5% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.9% ✅ 1-gauge-metrics-100-timesTime: ✅ 138.502µs (SLO: <150.000µs -7.7%) vs baseline: +1.6% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8% ✅ 1-rate-metric-1-timesTime: ✅ 3.089µs (SLO: <20.000µs 📉 -84.6%) vs baseline: +0.6% Memory: ✅ 32.067MB (SLO: <34.000MB -5.7%) vs baseline: +4.4% ✅ 1-rate-metrics-100-timesTime: ✅ 217.509µs (SLO: <250.000µs 📉 -13.0%) vs baseline: +1.4% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.9% ✅ 100-count-metrics-100-timesTime: ✅ 20.737ms (SLO: <22.000ms -5.7%) vs baseline: +3.7% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.7% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.274ms (SLO: <2.300ms 🟡 -1.1%) vs baseline: +2.0% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.420ms (SLO: <1.550ms -8.4%) vs baseline: +1.3% Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%) vs baseline: +5.0% ✅ 100-rate-metrics-100-timesTime: ✅ 2.213ms (SLO: <2.550ms 📉 -13.2%) vs baseline: +1.4% Memory: ✅ 32.185MB (SLO: <34.000MB -5.3%) vs baseline: +4.9% ✅ flush-1-metricTime: ✅ 4.657µs (SLO: <20.000µs 📉 -76.7%) vs baseline: -0.4% Memory: ✅ 32.165MB (SLO: <34.000MB -5.4%) vs baseline: +4.8% ✅ flush-100-metricsTime: ✅ 174.597µs (SLO: <250.000µs 📉 -30.2%) vs baseline: -0.1% Memory: ✅ 32.145MB (SLO: <34.000MB -5.5%) vs baseline: +4.7% ✅ flush-1000-metricsTime: ✅ 2.119ms (SLO: <2.500ms 📉 -15.2%) vs baseline: +0.3% Memory: ✅ 32.952MB (SLO: <34.500MB -4.5%) vs baseline: +4.8% 🟡 Near SLO Breach (6 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 20.411ms (SLO: <22.300ms -8.5%) vs baseline: -0.4% Memory: ✅ 66.483MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ exception-replay-enabledTime: ✅ 1.345ms (SLO: <1.450ms -7.2%) vs baseline: +0.5% Memory: ✅ 64.590MB (SLO: <67.000MB -3.6%) vs baseline: +4.9% ✅ iastTime: ✅ 20.445ms (SLO: <22.250ms -8.1%) vs baseline: ~same Memory: ✅ 66.451MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ profilerTime: ✅ 15.497ms (SLO: <16.550ms -6.4%) vs baseline: +0.4% Memory: ✅ 54.066MB (SLO: <54.500MB 🟡 -0.8%) vs baseline: +4.8% ✅ resource-renamingTime: ✅ 20.522ms (SLO: <21.750ms -5.6%) vs baseline: +0.1% Memory: ✅ 66.411MB (SLO: <67.000MB 🟡 -0.9%) vs baseline: +4.8% ✅ span-code-originTime: ✅ 25.419ms (SLO: <28.200ms -9.9%) vs baseline: ~same Memory: ✅ 67.443MB (SLO: <69.500MB -3.0%) vs baseline: +4.9% ✅ tracerTime: ✅ 20.480ms (SLO: <21.750ms -5.8%) vs baseline: -0.2% Memory: ✅ 66.447MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ tracer-and-profilerTime: ✅ 22.714ms (SLO: <23.500ms -3.3%) vs baseline: +0.3% Memory: ✅ 67.884MB (SLO: <68.000MB 🟡 -0.2%) vs baseline: +4.8% ✅ tracer-dont-create-db-spansTime: ✅ 19.291ms (SLO: <21.500ms 📉 -10.3%) vs baseline: ~same Memory: ✅ 66.409MB (SLO: <67.000MB 🟡 -0.9%) vs baseline: +4.7% ✅ tracer-minimalTime: ✅ 16.593ms (SLO: <17.500ms -5.2%) vs baseline: ~same Memory: ✅ 66.502MB (SLO: <67.000MB 🟡 -0.7%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 20.514ms (SLO: <21.750ms -5.7%) vs baseline: +0.2% Memory: ✅ 72.186MB (SLO: <72.500MB 🟡 -0.4%) vs baseline: +4.6% ✅ tracer-no-cachesTime: ✅ 18.425ms (SLO: <19.650ms -6.2%) vs baseline: ~same Memory: ✅ 66.413MB (SLO: <67.000MB 🟡 -0.9%) vs baseline: +4.8% ✅ tracer-no-databasesTime: ✅ 18.724ms (SLO: <20.100ms -6.8%) vs baseline: -0.1% Memory: ✅ 66.472MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ tracer-no-middlewareTime: ✅ 20.156ms (SLO: <21.500ms -6.3%) vs baseline: +0.2% Memory: ✅ 66.434MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.7% ✅ tracer-no-templatesTime: ✅ 20.279ms (SLO: <22.000ms -7.8%) vs baseline: ~same Memory: ✅ 66.454MB (SLO: <67.000MB 🟡 -0.8%) vs baseline: +4.9% 🟡 errortrackingdjangosimple - 6/6✅ errortracking-enabled-allTime: ✅ 18.152ms (SLO: <19.850ms -8.6%) vs baseline: +0.8% Memory: ✅ 66.455MB (SLO: <66.500MB 🟡 ~same) vs baseline: +4.9% ✅ errortracking-enabled-userTime: ✅ 18.124ms (SLO: <19.400ms -6.6%) vs baseline: +0.2% Memory: ✅ 66.471MB (SLO: <66.500MB 🟡 ~same) vs baseline: +5.0% ✅ tracer-enabledTime: ✅ 18.062ms (SLO: <19.450ms -7.1%) vs baseline: ~same Memory: ✅ 66.300MB (SLO: <66.500MB 🟡 -0.3%) vs baseline: +4.7% 🟡 errortrackingflasksqli - 6/6✅ errortracking-enabled-allTime: ✅ 2.069ms (SLO: <2.300ms 📉 -10.0%) vs baseline: ~same Memory: ✅ 52.907MB (SLO: <53.500MB 🟡 -1.1%) vs baseline: +5.0% ✅ errortracking-enabled-userTime: ✅ 2.112ms (SLO: <2.250ms -6.2%) vs baseline: +2.0% Memory: ✅ 52.829MB (SLO: <53.500MB 🟡 -1.3%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 2.075ms (SLO: <2.300ms -9.8%) vs baseline: ~same Memory: ✅ 52.907MB (SLO: <53.500MB 🟡 -1.1%) vs baseline: +4.9% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 4.594ms (SLO: <4.750ms -3.3%) vs baseline: ~same Memory: ✅ 62.836MB (SLO: <65.000MB -3.3%) vs baseline: +4.9% ✅ appsec-postTime: ✅ 6.612ms (SLO: <6.750ms -2.0%) vs baseline: ~same Memory: ✅ 62.797MB (SLO: <65.000MB -3.4%) vs baseline: +4.9% ✅ appsec-telemetryTime: ✅ 4.590ms (SLO: <4.750ms -3.4%) vs baseline: +0.1% Memory: ✅ 62.679MB (SLO: <65.000MB -3.6%) vs baseline: +4.7% ✅ debuggerTime: ✅ 1.858ms (SLO: <2.000ms -7.1%) vs baseline: +0.2% Memory: ✅ 45.397MB (SLO: <47.000MB -3.4%) vs baseline: +4.8% ✅ iast-getTime: ✅ 1.857ms (SLO: <2.000ms -7.1%) vs baseline: +0.1% Memory: ✅ 42.389MB (SLO: <49.000MB 📉 -13.5%) vs baseline: +5.0% ✅ profilerTime: ✅ 1.912ms (SLO: <2.100ms -9.0%) vs baseline: ~same Memory: ✅ 46.458MB (SLO: <47.000MB 🟡 -1.2%) vs baseline: +4.2% ✅ resource-renamingTime: ✅ 3.377ms (SLO: <3.650ms -7.5%) vs baseline: +0.6% Memory: ✅ 52.986MB (SLO: <53.500MB 🟡 -1.0%) vs baseline: +4.8% ✅ tracerTime: ✅ 3.354ms (SLO: <3.650ms -8.1%) vs baseline: +0.2% Memory: ✅ 53.006MB (SLO: <53.500MB 🟡 -0.9%) vs baseline: +4.8% ✅ tracer-nativeTime: ✅ 3.354ms (SLO: <3.650ms -8.1%) vs baseline: ~same Memory: ✅ 58.924MB (SLO: <60.000MB 🟡 -1.8%) vs baseline: +4.9% 🟡 flasksqli - 6/6✅ appsec-enabledTime: ✅ 3.958ms (SLO: <4.200ms -5.8%) vs baseline: -0.5% Memory: ✅ 62.954MB (SLO: <66.000MB -4.6%) vs baseline: +4.9% ✅ iast-enabledTime: ✅ 2.439ms (SLO: <2.800ms 📉 -12.9%) vs baseline: ~same Memory: ✅ 59.494MB (SLO: <60.000MB 🟡 -0.8%) vs baseline: +4.9% ✅ tracer-enabledTime: ✅ 2.065ms (SLO: <2.250ms -8.2%) vs baseline: -0.6% Memory: ✅ 52.927MB (SLO: <54.500MB -2.9%) vs baseline: +4.9% 🟡 packagespackageforrootmodulemapping - 4/4✅ cache_offTime: ✅ 338.285ms (SLO: <354.300ms -4.5%) vs baseline: -0.2% Memory: ✅ 39.210MB (SLO: <40.000MB 🟡 -2.0%) vs baseline: +4.9% ✅ cache_onTime: ✅ 0.381µs (SLO: <10.000µs 📉 -96.2%) vs baseline: -0.8% Memory: ✅ 38.098MB (SLO: <39.000MB -2.3%) vs baseline: +5.9% 📉 Performance Improvements (1 suite)📉 httppropagationextract - 60/60✅ all_styles_all_headersTime: ✅ 79.279µs (SLO: <100.000µs 📉 -20.7%) vs baseline: -2.0% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ b3_headersTime: ✅ 12.382µs (SLO: <20.000µs 📉 -38.1%) vs baseline: 📉 -12.5% Memory: ✅ 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +5.0% ✅ b3_single_headersTime: ✅ 10.826µs (SLO: <20.000µs 📉 -45.9%) vs baseline: 📉 -19.0% Memory: ✅ 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_matchTime: ✅ 62.056µs (SLO: <80.000µs 📉 -22.4%) vs baseline: -2.8% Memory: ✅ 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ datadog_tracecontext_tracestate_propagated_on_trace_id_matchTime: ✅ 64.331µs (SLO: <80.000µs 📉 -19.6%) vs baseline: -2.3% Memory: ✅ 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +5.0% ✅ empty_headersTime: ✅ 1.622µs (SLO: <10.000µs 📉 -83.8%) vs baseline: +1.2% Memory: ✅ 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ full_t_id_datadog_headersTime: ✅ 21.268µs (SLO: <30.000µs 📉 -29.1%) vs baseline: -7.3% Memory: ✅ 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ invalid_priority_headerTime: ✅ 5.256µs (SLO: <10.000µs 📉 -47.4%) vs baseline: 📉 -19.9% Memory: ✅ 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +5.1% ✅ invalid_span_id_headerTime: ✅ 5.059µs (SLO: <10.000µs 📉 -49.4%) vs baseline: 📉 -22.8% Memory: ✅ 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ invalid_tags_headerTime: ✅ 5.070µs (SLO: <10.000µs 📉 -49.3%) vs baseline: 📉 -22.6% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ invalid_trace_id_headerTime: ✅ 5.284µs (SLO: <10.000µs 📉 -47.2%) vs baseline: 📉 -19.6% Memory: ✅ 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.7% ✅ large_header_no_matchesTime: ✅ 26.316µs (SLO: <30.000µs 📉 -12.3%) vs baseline: -6.8% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8% ✅ large_valid_headers_allTime: ✅ 27.075µs (SLO: <40.000µs 📉 -32.3%) vs baseline: -6.9% Memory: ✅ 32.165MB (SLO: <33.500MB -4.0%) vs baseline: +4.7% ✅ medium_header_no_matchesTime: ✅ 8.389µs (SLO: <20.000µs 📉 -58.1%) vs baseline: 📉 -14.3% Memory: ✅ 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ medium_valid_headers_allTime: ✅ 9.999µs (SLO: <20.000µs 📉 -50.0%) vs baseline: 📉 -11.4% Memory: ✅ 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ none_propagation_styleTime: ✅ 1.711µs (SLO: <10.000µs 📉 -82.9%) vs baseline: +0.2% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ tracecontext_headersTime: ✅ 31.079µs (SLO: <40.000µs 📉 -22.3%) vs baseline: 📉 -10.3% Memory: ✅ 32.165MB (SLO: <33.500MB -4.0%) vs baseline: +4.8% ✅ valid_headers_allTime: ✅ 5.076µs (SLO: <10.000µs 📉 -49.2%) vs baseline: 📉 -22.7% Memory: ✅ 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +5.0% ✅ valid_headers_basicTime: ✅ 4.704µs (SLO: <10.000µs 📉 -53.0%) vs baseline: 📉 -23.5% Memory: ✅ 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.7% ✅ wsgi_empty_headersTime: ✅ 1.616µs (SLO: <10.000µs 📉 -83.8%) vs baseline: +0.6% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8% ✅ wsgi_invalid_priority_headerTime: ✅ 5.294µs (SLO: <10.000µs 📉 -47.1%) vs baseline: 📉 -19.7% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ wsgi_invalid_span_id_headerTime: ✅ 1.606µs (SLO: <10.000µs 📉 -83.9%) vs baseline: +1.0% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ wsgi_invalid_tags_headerTime: ✅ 5.043µs (SLO: <10.000µs 📉 -49.6%) vs baseline: 📉 -24.0% Memory: ✅ 32.224MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ wsgi_invalid_trace_id_headerTime: ✅ 5.312µs (SLO: <10.000µs 📉 -46.9%) vs baseline: 📉 -19.5% Memory: ✅ 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.8% ✅ wsgi_large_header_no_matchesTime: ✅ 27.283µs (SLO: <40.000µs 📉 -31.8%) vs baseline: -6.0% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.7% ✅ wsgi_large_valid_headers_allTime: ✅ 28.259µs (SLO: <40.000µs 📉 -29.4%) vs baseline: -6.4% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8% ✅ wsgi_medium_header_no_matchesTime: ✅ 8.741µs (SLO: <20.000µs 📉 -56.3%) vs baseline: 📉 -14.3% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.9% ✅ wsgi_medium_valid_headers_allTime: ✅ 10.199µs (SLO: <20.000µs 📉 -49.0%) vs baseline: 📉 -12.3% Memory: ✅ 32.185MB (SLO: <33.500MB -3.9%) vs baseline: +4.7% ✅ wsgi_valid_headers_allTime: ✅ 5.112µs (SLO: <10.000µs 📉 -48.9%) vs baseline: 📉 -22.6% Memory: ✅ 32.244MB (SLO: <33.500MB -3.8%) vs baseline: +4.9% ✅ wsgi_valid_headers_basicTime: ✅ 4.872µs (SLO: <10.000µs 📉 -51.3%) vs baseline: 📉 -21.3% Memory: ✅ 32.204MB (SLO: <33.500MB -3.9%) vs baseline: +4.8%
|
This commit optimizes the
HTTPPropagator.extractmethod, which is a critical hot path that runs on every request. The changes focus on reducing object allocations and avoiding unnecessary work in common scenarios.Contextobject unconditionally. If one is found later, we avoid 1 allocation._resolve_contextsmethod..meta) and method calls (.get_all_baggage_items) out of the loop, reducing overhead per-key.