Skip to content

feat(stats)!: implement span derived primary tags in libdd-trace-stats#1815

Open
duncanpharvey wants to merge 3 commits intomainfrom
duncan-harvey/libdd-trace-stats-span-derived-primary-tags
Open

feat(stats)!: implement span derived primary tags in libdd-trace-stats#1815
duncanpharvey wants to merge 3 commits intomainfrom
duncan-harvey/libdd-trace-stats-span-derived-primary-tags

Conversation

@duncanpharvey
Copy link
Copy Markdown
Contributor

@duncanpharvey duncanpharvey commented Mar 27, 2026

What does this PR do?

Add span derived primary tags to the stats aggregation key and populate ClientGroupedStats.span_derived_primary_tags with the related key/value pairs when the span derived primary tag keys are provided.

Motivation

Support span derived primary tags for Serverless.

Additional Notes

Span derived primary tags still needs to be implemented in libdd-data-pipeline. Omitted from this PR since the goal of this PR is to support span derived primary tags for Serverless without affecting other teams.

vec![], // TODO: Add span-derived primary tags

How to test the change?

  • Unit test for aggregating by span derived primary tags
  • Deployed to Azure Function with DD_APM_SPAN_DERIVED_PRIMARY_TAGS configured and confirmed the configured tags appear on trace metrics.

@duncanpharvey duncanpharvey changed the title implement span derived primary tags feat: implement span derived primary tags Mar 27, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 27, 2026

📚 Documentation Check Results

⚠️ 1426 documentation warning(s) found

📦 libdd-data-pipeline - 865 warning(s)

📦 libdd-trace-stats - 561 warning(s)


Updated: 2026-03-30 16:32:41 UTC | Commit: c02d926 | missing-docs job results

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 27, 2026

🔒 Cargo Deny Results

⚠️ 1 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-data-pipeline - 1 error(s)

Show output
error[vulnerability]: Denial of Service via Stack Exhaustion
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:276:1
    │
276 │ time 0.3.41 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0009
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0009
    ├ ## Impact
      
      When user-provided input is provided to any type that parses with the RFC 2822 format, a denial of
      service attack via stack exhaustion is possible. The attack relies on formally deprecated and
      rarely-used features that are part of the RFC 2822 format used in a malicious manner. Ordinary,
      non-malicious input will never encounter this scenario.
      
      ## Patches
      
      A limit to the depth of recursion was added in v0.3.47. From this version, an error will be returned
      rather than exhausting the stack.
      
      ## Workarounds
      
      Limiting the length of user input is the simplest way to avoid stack exhaustion, as the amount of
      the stack consumed would be at most a factor of the length of the input.
    ├ Announcement: https://github.com/time-rs/time/blob/main/CHANGELOG.md#0347-2026-02-05
    ├ Solution: Upgrade to >=0.3.47 (try `cargo update -p time`)
    ├ time v0.3.41
      └── tracing-appender v0.2.3
          └── libdd-log v1.0.0
              └── (dev) libdd-data-pipeline v3.0.1

advisories FAILED, bans ok, sources ok

📦 libdd-trace-stats - ✅ No issues


Updated: 2026-03-30 16:35:35 UTC | Commit: c02d926 | dependency-check job results

@github-actions
Copy link
Copy Markdown

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/duncan-harvey/libdd-trace-stats-span-derived-primary-tags

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 1 1 No change (0%)
Total 1 1 No change (0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-data-pipeline/src/stats_exporter.rs 1 1 No change (0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 20 20 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 55 55 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 8 8 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 195 195 No change (0%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 27, 2026

Codecov Report

❌ Patch coverage is 98.78049% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.39%. Comparing base (102231d) to head (037a07b).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1815      +/-   ##
==========================================
+ Coverage   71.20%   71.39%   +0.19%     
==========================================
  Files         414      423       +9     
  Lines       65914    66841     +927     
==========================================
+ Hits        46931    47720     +789     
- Misses      18983    19121     +138     
Components Coverage Δ
libdd-crashtracker 65.22% <ø> (-0.11%) ⬇️
libdd-crashtracker-ffi 34.47% <ø> (-0.77%) ⬇️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.06% <100.00%> (-0.22%) ⬇️
libdd-data-pipeline-ffi 72.91% <ø> (-1.26%) ⬇️
libdd-common 80.19% <ø> (+0.40%) ⬆️
libdd-common-ffi 73.87% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 72.48% <ø> (-0.08%) ⬇️
libdd-profiling 81.61% <ø> (-0.02%) ⬇️
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 30.18% <ø> (-0.52%) ⬇️
datdog-sidecar-ffi 6.52% <ø> (-2.40%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 87.24% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 88.72% <ø> (+0.08%) ⬆️
datadog-tracer-flare 86.88% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-prod-us1-5
Copy link
Copy Markdown

datadog-prod-us1-5 bot commented Mar 27, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 98.78%
Overall Coverage: 71.39% (+0.17%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 037a07b | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

@duncanpharvey duncanpharvey changed the title feat: implement span derived primary tags feat(stats): implement span derived primary tags Mar 27, 2026
@duncanpharvey duncanpharvey changed the title feat(stats): implement span derived primary tags feat!(stats): implement span derived primary tags Mar 27, 2026
@duncanpharvey duncanpharvey changed the title feat!(stats): implement span derived primary tags feat(stats)!: implement span derived primary tags Mar 27, 2026
@duncanpharvey duncanpharvey force-pushed the duncan-harvey/libdd-trace-stats-span-derived-primary-tags branch 2 times, most recently from 12be3d3 to 3289c8a Compare March 30, 2026 14:31
@duncanpharvey duncanpharvey force-pushed the duncan-harvey/libdd-trace-stats-span-derived-primary-tags branch from 3289c8a to 62181a8 Compare March 30, 2026 14:33
@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Mar 30, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-30 16:50:11

Comparing candidate commit 037a07b in PR branch duncan-harvey/libdd-trace-stats-span-derived-primary-tags with baseline commit 29678bd in branch main.

Found 8 performance improvements and 15 performance regressions! Performance is the same for 39 metrics, 0 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

scenario:credit_card/is_card_number/ 378282246310005

  • 🟥 execution_time [+5.238µs; +5.342µs] or [+7.735%; +7.889%]
  • 🟥 throughput [-1079683.106op/s; -1060036.959op/s] or [-7.311%; -7.178%]

scenario:credit_card/is_card_number/378282246310005

  • 🟥 execution_time [+4.871µs; +4.943µs] or [+7.523%; +7.635%]
  • 🟥 throughput [-1095525.681op/s; -1080484.998op/s] or [-7.093%; -6.996%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟥 execution_time [+7.335µs; +7.361µs] or [+16.324%; +16.382%]
  • 🟥 throughput [-3133945.483op/s; -3122002.188op/s] or [-14.082%; -14.028%]

scenario:credit_card/is_card_number_no_luhn/ 3782-8224-6310-005

  • 🟥 execution_time [+3.661µs; +3.797µs] or [+6.025%; +6.250%]
  • 🟥 throughput [-970652.811op/s; -934446.337op/s] or [-5.897%; -5.677%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟥 execution_time [+4.318µs; +4.374µs] or [+8.035%; +8.139%]
  • 🟥 throughput [-1400788.953op/s; -1383299.865op/s] or [-7.528%; -7.434%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟥 execution_time [+4.510µs; +4.578µs] or [+8.954%; +9.089%]
  • 🟥 throughput [-1654026.004op/s; -1631214.292op/s] or [-8.331%; -8.216%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟥 execution_time [+7.313µs; +7.339µs] or [+16.272%; +16.330%]
  • 🟥 throughput [-3124508.827op/s; -3112545.058op/s] or [-14.043%; -13.989%]

scenario:normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo...

  • 🟩 execution_time [-19.653µs; -19.508µs] or [-9.548%; -9.478%]
  • 🟩 throughput [+508958.148op/s; +512539.689op/s] or [+10.476%; +10.549%]

scenario:normalization/normalize_name/normalize_name/bad-name

  • 🟩 execution_time [-784.537ns; -762.170ns] or [-4.209%; -4.089%]
  • 🟩 throughput [+2289285.660op/s; +2356444.471op/s] or [+4.267%; +4.392%]

scenario:normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000...

  • 🟩 execution_time [-39.939µs; -39.508µs] or [-7.443%; -7.363%]
  • 🟩 throughput [+148216.109op/s; +149757.705op/s] or [+7.953%; +8.036%]

scenario:normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters

  • 🟩 execution_time [-21.690µs; -21.573µs] or [-11.395%; -11.334%]
  • 🟩 throughput [+671845.470op/s; +675373.443op/s] or [+12.788%; +12.855%]

scenario:single_flag_killswitch/rules-based

  • 🟥 execution_time [+50.631ns; +51.860ns] or [+26.251%; +26.888%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 495.786µs 496.862µs ± 0.660µs 496.780µs ± 0.387µs 497.150µs 498.085µs 498.999µs 499.681µs 0.58% 1.184 2.143 0.13% 0.047µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 2001278.372op/s 2012636.640op/s ± 2671.171op/s 2012961.797op/s ± 1569.578op/s 2014584.698op/s 2016004.455op/s 2016710.800op/s 2016998.592op/s 0.20% -1.173 2.099 0.13% 188.880op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.892µs 371.700µs ± 0.423µs 371.627µs ± 0.267µs 371.920µs 372.386µs 372.884µs 373.221µs 0.43% 0.748 0.682 0.11% 0.030µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2679381.068op/s 2690343.867op/s ± 3060.185op/s 2690870.777op/s ± 1931.116op/s 2692552.082op/s 2694588.840op/s 2695600.961op/s 2696203.300op/s 0.20% -0.741 0.663 0.11% 216.388op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.231µs 168.711µs ± 0.242µs 168.683µs ± 0.166µs 168.870µs 169.152µs 169.229µs 169.597µs 0.54% 0.485 0.046 0.14% 0.017µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5896321.820op/s 5927309.584op/s ± 8496.634op/s 5928291.935op/s ± 5829.195op/s 5933810.074op/s 5939924.258op/s 5943064.082op/s 5944203.558op/s 0.27% -0.477 0.031 0.14% 600.803op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.800µs 37.067µs ± 0.120µs 37.090µs ± 0.078µs 37.153µs 37.232µs 37.317µs 37.322µs 0.63% -0.272 -0.748 0.32% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26793547.215op/s 26978223.158op/s ± 87219.274op/s 26961619.349op/s ± 56705.084op/s 27046771.521op/s 27128716.692op/s 27147786.289op/s 27174081.069op/s 0.79% 0.284 -0.747 0.32% 6167.334op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.243µs 46.450µs ± 0.145µs 46.425µs ± 0.058µs 46.486µs 46.648µs 46.826µs 47.826µs 3.02% 4.725 39.368 0.31% 0.010µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 20909177.503op/s 21528761.402op/s ± 66313.742op/s 21540141.673op/s ± 27012.519op/s 21565468.509op/s 21601984.185op/s 21609452.449op/s 21624754.289op/s 0.39% -4.551 37.122 0.31% 4689.090op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [496.770µs; 496.953µs] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2012266.441op/s; 2013006.838op/s] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [371.642µs; 371.759µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2689919.755op/s; 2690767.979op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.677µs; 168.744µs] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5926132.032op/s; 5928487.135op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.051µs; 37.084µs] or [-0.045%; +0.045%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26966135.406op/s; 26990310.911op/s] or [-0.045%; +0.045%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.430µs; 46.470µs] or [-0.043%; +0.043%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21519570.955op/s; 21537951.849op/s] or [-0.043%; +0.043%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_serialize_compressed_pprof_timestamped_x1000 execution_time 927.597µs 932.152µs ± 2.944µs 931.519µs ± 1.290µs 933.221µs 936.716µs 939.299µs 957.530µs 2.79% 3.663 26.487 0.32% 0.208µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_serialize_compressed_pprof_timestamped_x1000 execution_time [931.744µs; 932.560µs] or [-0.044%; +0.044%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 33.161µs 33.808µs ± 1.101µs 33.313µs ± 0.061µs 33.392µs 36.201µs 36.260µs 36.910µs 10.80% 1.700 0.952 3.25% 0.078µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [33.655µs; 33.961µs] or [-0.451%; +0.451%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 238.861ns 244.119ns ± 3.952ns 243.566ns ± 2.451ns 246.212ns 251.205ns 253.494ns 270.963ns 11.25% 1.998 9.532 1.61% 0.279ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [243.572ns; 244.667ns] or [-0.224%; +0.224%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 728.744µs 729.817µs ± 0.503µs 729.774µs ± 0.356µs 730.131µs 730.701µs 731.340µs 731.387µs 0.22% 0.647 0.480 0.07% 0.036µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [729.747µs; 729.887µs] or [-0.010%; +0.010%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.831µs 186.248µs ± 0.237µs 186.217µs ± 0.166µs 186.395µs 186.679µs 186.873µs 187.031µs 0.44% 0.716 0.227 0.13% 0.017µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5346708.660op/s 5369199.692op/s ± 6814.633op/s 5370090.529op/s ± 4775.639op/s 5374619.188op/s 5378302.612op/s 5380264.759op/s 5381232.038op/s 0.21% -0.709 0.212 0.13% 481.867op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.767µs 17.865µs ± 0.064µs 17.857µs ± 0.022µs 17.880µs 17.967µs 18.040µs 18.436µs 3.25% 4.435 32.878 0.36% 0.005µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 54241453.780op/s 55975749.351op/s ± 196893.757op/s 56001739.348op/s ± 69094.608op/s 56069440.354op/s 56172279.722op/s 56251683.561op/s 56284122.249op/s 0.50% -4.276 30.964 0.35% 13922.491op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.531µs 10.594µs ± 0.041µs 10.589µs ± 0.022µs 10.610µs 10.666µs 10.735µs 10.775µs 1.76% 1.559 3.682 0.38% 0.003µs 1 200
normalization/normalize_name/normalize_name/good throughput 92803216.800op/s 94390210.663op/s ± 359677.643op/s 94438985.588op/s ± 193114.271op/s 94635178.735op/s 94875138.476op/s 94927907.058op/s 94954302.336op/s 0.55% -1.522 3.532 0.38% 25433.050op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [186.215µs; 186.281µs] or [-0.018%; +0.018%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5368255.250op/s; 5370144.135op/s] or [-0.018%; +0.018%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.856µs; 17.874µs] or [-0.050%; +0.050%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55948461.770op/s; 56003036.932op/s] or [-0.049%; +0.049%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.589µs; 10.600µs] or [-0.053%; +0.053%] None None None
normalization/normalize_name/normalize_name/good throughput [94340362.800op/s; 94440058.525op/s] or [-0.053%; +0.053%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.979µs 5.082µs ± 0.051µs 5.104µs ± 0.040µs 5.125µs 5.145µs 5.150µs 5.168µs 1.27% -0.368 -1.410 1.00% 0.004µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.075µs; 5.089µs] or [-0.139%; +0.139%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2598 execution_time 3.593ms 3.628ms ± 0.018ms 3.624ms ± 0.012ms 3.642ms 3.660ms 3.667ms 3.681ms 1.58% 0.521 -0.399 0.49% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2598 execution_time [3.626ms; 3.631ms] or [-0.068%; +0.068%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 14.704µs 15.141µs ± 0.216µs 15.103µs ± 0.118µs 15.237µs 15.488µs 15.821µs 16.433µs 8.80% 1.784 6.879 1.42% 0.015µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [15.111µs; 15.171µs] or [-0.198%; +0.198%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 145.042µs 146.880µs ± 1.661µs 146.676µs ± 0.540µs 147.215µs 148.477µs 154.132µs 162.209µs 10.59% 5.586 42.621 1.13% 0.117µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.650µs; 147.110µs] or [-0.157%; +0.157%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.211ms 4.219ms ± 0.002ms 4.218ms ± 0.002ms 4.220ms 4.223ms 4.223ms 4.232ms 0.32% 0.721 3.966 0.06% 0.000ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.218ms; 4.219ms] or [-0.008%; +0.008%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 5.306µs 5.374µs ± 0.024µs 5.370µs ± 0.013µs 5.384µs 5.412µs 5.452µs 5.518µs 2.74% 1.762 7.421 0.44% 0.002µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [5.371µs; 5.377µs] or [-0.062%; +0.062%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.367µs 2.405µs ± 0.011µs 2.405µs ± 0.005µs 2.412µs 2.421µs 2.426µs 2.445µs 1.67% -0.613 1.694 0.47% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.403µs; 2.407µs] or [-0.066%; +0.066%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 15.084ms 15.120ms ± 0.022ms 15.116ms ± 0.014ms 15.132ms 15.161ms 15.181ms 15.225ms 0.72% 1.107 2.248 0.15% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [15.117ms; 15.123ms] or [-0.020%; +0.020%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_timestamped_x1000 execution_time 4.159ms 4.166ms ± 0.008ms 4.165ms ± 0.002ms 4.167ms 4.171ms 4.189ms 4.271ms 2.54% 10.492 128.141 0.20% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_timestamped_x1000 execution_time [4.165ms; 4.167ms] or [-0.027%; +0.027%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 14.227ms 14.289ms ± 0.062ms 14.282ms ± 0.013ms 14.294ms 14.325ms 14.687ms 14.775ms 3.46% 5.893 39.269 0.43% 0.004ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.280ms; 14.298ms] or [-0.060%; +0.060%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 160.722µs 162.101µs ± 0.465µs 162.060µs ± 0.155µs 162.231µs 162.604µs 163.107µs 165.762µs 2.28% 4.035 30.051 0.29% 0.033µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [162.037µs; 162.166µs] or [-0.040%; +0.040%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 290.281µs 290.984µs ± 0.628µs 290.898µs ± 0.203µs 291.121µs 291.520µs 292.351µs 298.461µs 2.60% 8.640 98.713 0.22% 0.044µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [290.896µs; 291.071µs] or [-0.030%; +0.030%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.895µs 3.916µs ± 0.004µs 3.916µs ± 0.003µs 3.919µs 3.923µs 3.926µs 3.930µs 0.37% -0.011 2.665 0.11% 0.000µs 1 200
credit_card/is_card_number/ throughput 254430796.766op/s 255340304.120op/s ± 280267.743op/s 255376582.010op/s ± 181020.382op/s 255543705.005op/s 255670380.377op/s 255778949.431op/s 256759232.022op/s 0.54% 0.026 2.718 0.11% 19817.922op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.010µs 79.597µs ± 0.333µs 79.555µs ± 0.214µs 79.780µs 80.229µs 80.442µs 81.031µs 1.86% 0.871 1.305 0.42% 0.024µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12340970.435op/s 12563514.876op/s ± 52342.609op/s 12569948.399op/s ± 33863.160op/s 12602214.534op/s 12637053.994op/s 12651637.463op/s 12656670.241op/s 0.69% -0.840 1.200 0.42% 3701.181op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 72.402µs 73.000µs ± 0.357µs 72.942µs ± 0.193µs 73.159µs 73.599µs 74.086µs 74.958µs 2.76% 1.620 5.259 0.49% 0.025µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13340887.327op/s 13698879.542op/s ± 66445.775op/s 13709612.928op/s ± 36315.203op/s 13743759.788op/s 13781990.232op/s 13802574.403op/s 13811820.499op/s 0.75% -1.554 4.865 0.48% 4698.426op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.897µs 3.916µs ± 0.004µs 3.916µs ± 0.002µs 3.918µs 3.922µs 3.924µs 3.927µs 0.29% -0.271 3.219 0.09% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254631344.361op/s 255359136.461op/s ± 238477.274op/s 255380105.895op/s ± 162077.160op/s 255540687.927op/s 255658011.346op/s 255727299.745op/s 256638047.605op/s 0.49% 0.285 3.282 0.09% 16862.890op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.222µs 69.651µs ± 0.251µs 69.591µs ± 0.159µs 69.794µs 70.132µs 70.302µs 70.494µs 1.30% 0.852 0.310 0.36% 0.018µs 1 200
credit_card/is_card_number/378282246310005 throughput 14185575.102op/s 14357400.744op/s ± 51655.076op/s 14369745.948op/s ± 32902.917op/s 14397152.244op/s 14419990.145op/s 14440766.432op/s 14446236.625op/s 0.53% -0.835 0.264 0.36% 3652.565op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.185µs 52.281µs ± 0.057µs 52.275µs ± 0.040µs 52.315µs 52.379µs 52.424µs 52.524µs 0.48% 0.944 1.475 0.11% 0.004µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19038938.198op/s 19127532.624op/s ± 20980.484op/s 19129524.917op/s ± 14499.382op/s 19143929.346op/s 19155570.379op/s 19160488.659op/s 19162713.193op/s 0.17% -0.935 1.444 0.11% 1483.544op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.710µs 5.852µs ± 0.062µs 5.844µs ± 0.041µs 5.898µs 5.968µs 5.993µs 6.008µs 2.80% 0.268 -0.461 1.06% 0.004µs 1 200
credit_card/is_card_number/x371413321323331 throughput 166441889.004op/s 170892614.551op/s ± 1810466.095op/s 171102498.958op/s ± 1207326.248op/s 172152891.391op/s 173383653.447op/s 174371333.626op/s 175139868.645op/s 2.36% -0.222 -0.480 1.06% 128019.285op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.898µs 3.917µs ± 0.004µs 3.917µs ± 0.003µs 3.919µs 3.923µs 3.927µs 3.930µs 0.34% 0.000 2.703 0.10% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254447123.249op/s 255308580.920op/s ± 251628.109op/s 255322589.112op/s ± 167169.720op/s 255489620.745op/s 255648709.576op/s 255699488.076op/s 256552867.312op/s 0.48% 0.014 2.740 0.10% 17792.794op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 63.972µs 64.484µs ± 0.194µs 64.468µs ± 0.128µs 64.606µs 64.791µs 65.005µs 65.126µs 1.02% 0.455 0.506 0.30% 0.014µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15354849.076op/s 15507870.966op/s ± 46562.934op/s 15511452.881op/s ± 30953.823op/s 15540469.717op/s 15575769.597op/s 15598071.770op/s 15631742.765op/s 0.78% -0.435 0.475 0.30% 3292.497op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 57.805µs 58.091µs ± 0.172µs 58.061µs ± 0.122µs 58.209µs 58.414µs 58.556µs 58.624µs 0.97% 0.756 0.032 0.30% 0.012µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 17057737.483op/s 17214606.750op/s ± 51002.371op/s 17223170.170op/s ± 36133.544op/s 17255493.343op/s 17278096.948op/s 17290774.438op/s 17299453.337op/s 0.44% -0.743 0.002 0.30% 3606.412op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.905µs 3.916µs ± 0.004µs 3.916µs ± 0.003µs 3.919µs 3.923µs 3.929µs 3.932µs 0.42% 0.898 1.384 0.10% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254316206.056op/s 255346690.671op/s ± 253811.315op/s 255387856.320op/s ± 170679.419op/s 255541480.546op/s 255655877.085op/s 255694658.981op/s 256062484.861op/s 0.26% -0.890 1.362 0.10% 17947.170op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.519µs 54.911µs ± 0.234µs 54.871µs ± 0.171µs 55.054µs 55.294µs 55.710µs 55.822µs 1.73% 1.034 1.405 0.42% 0.017µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17914236.620op/s 18211502.156op/s ± 77122.344op/s 18224711.899op/s ± 56932.838op/s 18277112.487op/s 18302830.998op/s 18316361.566op/s 18342161.292op/s 0.64% -1.005 1.293 0.42% 5453.373op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.188µs 52.271µs ± 0.051µs 52.268µs ± 0.039µs 52.307µs 52.353µs 52.396µs 52.477µs 0.40% 0.681 0.591 0.10% 0.004µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19055874.703op/s 19130915.156op/s ± 18667.965op/s 19132104.943op/s ± 14107.682op/s 19146230.683op/s 19155795.516op/s 19161113.650op/s 19161640.312op/s 0.15% -0.675 0.571 0.10% 1320.024op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.710µs 5.847µs ± 0.066µs 5.838µs ± 0.046µs 5.898µs 5.970µs 6.003µs 6.012µs 2.99% 0.442 -0.477 1.12% 0.005µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 166322082.177op/s 171044276.009op/s ± 1911256.119op/s 171293863.001op/s ± 1336996.443op/s 172445797.179op/s 173820501.206op/s 174328187.664op/s 175141728.146op/s 2.25% -0.398 -0.523 1.11% 135146.216op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.916µs; 3.917µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/ throughput [255301461.707op/s; 255379146.534op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.551µs; 79.643µs] or [-0.058%; +0.058%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12556260.694op/s; 12570769.058op/s] or [-0.058%; +0.058%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.951µs; 73.050µs] or [-0.068%; +0.068%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13689670.797op/s; 13708088.288op/s] or [-0.067%; +0.067%] None None None
credit_card/is_card_number/37828224631 execution_time [3.916µs; 3.917µs] or [-0.013%; +0.013%] None None None
credit_card/is_card_number/37828224631 throughput [255326085.805op/s; 255392187.118op/s] or [-0.013%; +0.013%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.617µs; 69.686µs] or [-0.050%; +0.050%] None None None
credit_card/is_card_number/378282246310005 throughput [14350241.847op/s; 14364559.641op/s] or [-0.050%; +0.050%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.273µs; 52.289µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19124624.931op/s; 19130440.318op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.844µs; 5.861µs] or [-0.147%; +0.147%] None None None
credit_card/is_card_number/x371413321323331 throughput [170641701.363op/s; 171143527.740op/s] or [-0.147%; +0.147%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.916µs; 3.917µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/ throughput [255273707.684op/s; 255343454.156op/s] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.457µs; 64.511µs] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15501417.792op/s; 15514324.141op/s] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.067µs; 58.115µs] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17207538.311op/s; 17221675.188op/s] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.916µs; 3.917µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255311514.863op/s; 255381866.478op/s] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.879µs; 54.944µs] or [-0.059%; +0.059%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18200813.741op/s; 18222190.571op/s] or [-0.059%; +0.059%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.264µs; 52.279µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19128327.956op/s; 19133502.356op/s] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.838µs; 5.856µs] or [-0.156%; +0.156%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [170779394.293op/s; 171309157.726op/s] or [-0.155%; +0.155%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.911ms 49.379ms ± 1.278ms 49.170ms ± 0.091ms 49.334ms 49.606ms 54.781ms 62.643ms 27.40% 8.699 79.103 2.58% 0.090ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [49.202ms; 49.556ms] or [-0.359%; +0.359%] None None None

Group 21

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 037a07b 1774888269 duncan-harvey/libdd-trace-stats-span-derived-primary-tags
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 244.383ns 255.425ns ± 14.085ns 248.837ns ± 3.088ns 255.088ns 287.301ns 297.867ns 300.091ns 20.60% 1.713 1.669 5.50% 0.996ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [253.473ns; 257.377ns] or [-0.764%; +0.764%] None None None

Baseline

Omitted due to size.

@duncanpharvey duncanpharvey marked this pull request as ready for review March 30, 2026 15:07
@duncanpharvey duncanpharvey requested review from a team as code owners March 30, 2026 15:07
@duncanpharvey duncanpharvey requested review from a team, Lewis-E and shreyamalpani and removed request for a team March 30, 2026 15:07
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts bot commented Mar 30, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 101.90 MB 101.95 MB +.04% (+45.03 KB) 🔍
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.76 MB 8.76 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 118.84 MB 118.87 MB +.02% (+28.71 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.36 MB 11.36 MB +0% (+1.01 KB) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.39 MB 27.41 MB +.04% (+11.50 KB) 🔍
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 80.69 KB 80.69 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 187.18 MB 187.27 MB +.05% (+96.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 924.91 MB 925.11 MB +.02% (+206.84 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.06 MB 9.06 MB +.02% (+2.00 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 80.69 KB 80.69 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 26.97 MB 26.98 MB +.05% (+16.00 KB) 🔍
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 61.28 MB 61.29 MB +.02% (+13.89 KB) 🔍
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 23.20 MB 23.21 MB +.04% (+10.00 KB) 🔍
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 81.94 KB 81.94 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 191.48 MB 191.56 MB +.04% (+88.00 KB) 🔍
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 908.20 MB 908.40 MB +.02% (+202.91 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.90 MB 6.90 MB +.02% (+2.00 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 81.94 KB 81.94 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 29.11 MB 29.12 MB +.05% (+16.00 KB) 🔍
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 57.68 MB 57.69 MB +.02% (+14.18 KB) 🔍
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 88.72 MB 88.76 MB +.04% (+37.21 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.32 MB 10.32 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 111.54 MB 111.56 MB +.01% (+22.57 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 12.07 MB 12.08 MB +.03% (+4.81 KB) 🔍

@duncanpharvey duncanpharvey changed the title feat(stats)!: implement span derived primary tags feat(stats)!: implement span derived primary tags in libdd-trace-stats Mar 30, 2026
Comment on lines +269 to +272
let span_derived_primary_tags: Vec<(&'a str, &'a str)> = span_derived_primary_tag_keys
.iter()
.filter_map(|key| Some(((key.as_str()), (span.get_meta(key.as_str())?))))
.collect();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The agent filters out tags for which the value is an empty string, and I think we want the same behaviour here
https://github.com/DataDog/datadog-agent/blob/ab3b6ca54253a07c4a85d1b904deca89657d5e53/pkg/trace/stats/span_concentrator.go#L112-L114

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed here: 037a07b


let span_derived_primary_tags: Vec<(&'a str, &'a str)> = span_derived_primary_tag_keys
.iter()
.filter_map(|key| Some(((key.as_str()), (span.get_meta(key.as_str())?))))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is an uneeded set of parenthesis around span.get_meta(key.as_str())?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed here: 670ecb6

Copy link
Copy Markdown
Contributor

@paullegranddc paullegranddc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We talked about this in our sync with the data-pipeline team.
The spec for this feature might change, so we want to hold on before merging this I think.

cc @ichinaski

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants