Skip to content

feat(profiling)!: add heap-live allocation tracking to Profile#1537

Draft
realFlowControl wants to merge 2 commits intomainfrom
florian/heap-live-tracking
Draft

feat(profiling)!: add heap-live allocation tracking to Profile#1537
realFlowControl wants to merge 2 commits intomainfrom
florian/heap-live-tracking

Conversation

@realFlowControl
Copy link
Member

@realFlowControl realFlowControl commented Feb 9, 2026

What does this PR do?

This PR adds heap-live allocation tracking support

  • heap-live tracking state inside libdd-profiling::internal::Profile
  • a new internal heap-live tracker that retains allocation samples across profile resets
  • ddog_prof_Profile_configure_heap_live() to configure heap-live tracking for a profile
  • ddog_prof_Profile_add_tracked_allocation() to add a sample and retain it as a tracked live allocation
  • ddog_prof_Profile_untrack_allocation() to remove a tracked allocation by pointer

It also updates reset/serialization behavior so tracked live allocations are re-injected automatically.

Motivation

I have a proof-of-concept already in dd-trace-php but figured that others could also benefit from this. It's an easy API for consumers that consume libdatadog in dd-trace-php style (one profile that get's reset, sorry Ruby).

Additional Notes

I was not sure if we should do something more sophisticated then a hashmap to track the allocations in libdatadog, I was thinking that this should be up to the calling profiler itself, because maybe the VM would let you limit calls to untrack anyway.
For PHP for example I think I can sneak in a bitmap after the chunk header.

How to test the change?

Describe here in detail how the change can be validated.

Used in DataDog/dd-trace-php#3623

@github-actions
Copy link

github-actions bot commented Feb 9, 2026

📚 Documentation Check Results

⚠️ 645 documentation warning(s) found

📦 libdd-profiling - 645 warning(s)


Updated: 2026-03-11 14:05:25 UTC | Commit: db81ea7 | missing-docs job results

@github-actions
Copy link

github-actions bot commented Feb 9, 2026

🔒 Cargo Deny Results

No issues found!

📦 libdd-profiling - ✅ No issues


Updated: 2026-03-11 14:05:28 UTC | Commit: db81ea7 | dependency-check job results

@codecov-commenter
Copy link

codecov-commenter commented Feb 9, 2026

Codecov Report

❌ Patch coverage is 86.33094% with 95 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.34%. Comparing base (b04809b) to head (f51c099).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1537      +/-   ##
==========================================
+ Coverage   71.18%   71.34%   +0.15%     
==========================================
  Files         429      430       +1     
  Lines       63503    64196     +693     
==========================================
+ Hits        45207    45802     +595     
- Misses      18296    18394      +98     
Components Coverage Δ
libdd-crashtracker 62.36% <ø> (+0.03%) ⬆️
libdd-crashtracker-ffi 16.56% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 88.19% <ø> (ø)
libdd-data-pipeline-ffi 75.96% <ø> (ø)
libdd-common 79.73% <ø> (ø)
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.45% <ø> (-0.04%) ⬇️
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.35% <ø> (-0.12%) ⬇️
libdd-profiling 81.91% <86.33%> (+0.32%) ⬆️
libdd-profiling-ffi 65.28% <90.35%> (+1.62%) ⬆️
datadog-sidecar 32.49% <ø> (ø)
datdog-sidecar-ffi 7.81% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 91.80% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 89.08% <ø> (ø)
datadog-tracer-flare 90.45% <ø> (ø)
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.

@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch from afb9bd0 to 061d9fc Compare February 9, 2026 15:18
@pr-commenter
Copy link

pr-commenter bot commented Feb 9, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-11 13:48:36

Comparing candidate commit f51c099 in PR branch florian/heap-live-tracking with baseline commit c8a4b19 in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 58 metrics, 2 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 ----------------------------------'

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 f51c099 1773235972 florian/heap-live-tracking
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.773ms 49.247ms ± 1.421ms 49.031ms ± 0.077ms 49.099ms 49.395ms 57.260ms 63.534ms 29.58% 7.895 66.449 2.88% 0.100ms 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.050ms; 49.444ms] or [-0.400%; +0.400%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 245.971ns 256.295ns ± 11.546ns 251.371ns ± 3.488ns 262.883ns 283.017ns 288.803ns 292.195ns 16.24% 1.493 1.164 4.49% 0.816ns 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 [254.695ns; 257.896ns] or [-0.624%; +0.624%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 206.013µs 206.727µs ± 0.345µs 206.687µs ± 0.231µs 206.945µs 207.341µs 207.532µs 207.646µs 0.46% 0.375 -0.449 0.17% 0.024µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4815887.953op/s 4837315.945op/s ± 8075.427op/s 4838225.433op/s ± 5397.838op/s 4843030.985op/s 4848850.616op/s 4851805.529op/s 4854062.608op/s 0.33% -0.368 -0.456 0.17% 571.019op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.617µs 18.760µs ± 0.127µs 18.701µs ± 0.048µs 18.844µs 19.022µs 19.136µs 19.243µs 2.90% 1.285 1.117 0.68% 0.009µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 51967452.520op/s 53308553.236op/s ± 358766.772op/s 53473379.515op/s ± 136447.257op/s 53573907.441op/s 53652278.860op/s 53695477.503op/s 53715398.520op/s 0.45% -1.256 1.000 0.67% 25368.642op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.786µs 10.874µs ± 0.043µs 10.871µs ± 0.030µs 10.905µs 10.948µs 10.982µs 10.996µs 1.16% 0.438 -0.178 0.39% 0.003µs 1 200
normalization/normalize_name/normalize_name/good throughput 90938089.349op/s 91959805.468op/s ± 361576.377op/s 91990591.521op/s ± 253752.461op/s 92230142.649op/s 92505516.254op/s 92622348.813op/s 92712312.980op/s 0.78% -0.419 -0.201 0.39% 25567.311op/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 [206.679µs; 206.775µs] or [-0.023%; +0.023%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4836196.769op/s; 4838435.122op/s] or [-0.023%; +0.023%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.742µs; 18.777µs] or [-0.094%; +0.094%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [53258831.612op/s; 53358274.860op/s] or [-0.093%; +0.093%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.869µs; 10.880µs] or [-0.055%; +0.055%] None None None
normalization/normalize_name/normalize_name/good throughput [91909694.460op/s; 92009916.477op/s] or [-0.054%; +0.054%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 189.994ns 192.246ns ± 1.945ns 192.000ns ± 1.528ns 193.295ns 195.693ns 198.104ns 199.591ns 3.95% 1.101 1.396 1.01% 0.138ns 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 [191.977ns; 192.516ns] or [-0.140%; +0.140%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 144.393µs 146.332µs ± 1.696µs 146.050µs ± 0.496µs 146.592µs 148.033µs 153.455µs 162.904µs 11.54% 5.962 49.186 1.16% 0.120µ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.097µs; 146.567µs] or [-0.161%; +0.161%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 10.677ms 10.706ms ± 0.013ms 10.704ms ± 0.008ms 10.713ms 10.730ms 10.740ms 10.767ms 0.59% 1.186 2.627 0.12% 0.001ms 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 [10.704ms; 10.708ms] or [-0.017%; +0.017%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 493.303µs 494.248µs ± 1.289µs 494.119µs ± 0.320µs 494.415µs 494.951µs 497.561µs 506.142µs 2.43% 7.831 68.752 0.26% 0.091µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1975728.396op/s 2023289.193op/s ± 5173.474op/s 2023804.893op/s ± 1309.803op/s 2025205.996op/s 2026589.359op/s 2026896.073op/s 2027150.528op/s 0.17% -7.758 67.831 0.26% 365.820op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 369.864µs 370.579µs ± 0.280µs 370.569µs ± 0.189µs 370.761µs 371.074µs 371.322µs 371.397µs 0.22% 0.362 0.313 0.08% 0.020µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2692538.764op/s 2698478.678op/s ± 2036.917op/s 2698552.608op/s ± 1375.693op/s 2699905.556op/s 2701427.048op/s 2702907.130op/s 2703696.494op/s 0.19% -0.357 0.308 0.08% 144.032op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 167.303µs 167.595µs ± 0.145µs 167.581µs ± 0.088µs 167.667µs 167.855µs 168.061µs 168.113µs 0.32% 0.865 1.392 0.09% 0.010µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5948374.199op/s 5966779.809op/s ± 5144.041op/s 5967250.342op/s ± 3133.499op/s 5970426.534op/s 5973910.765op/s 5975988.034op/s 5977179.130op/s 0.17% -0.859 1.373 0.09% 363.739op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.960µs 37.217µs ± 0.078µs 37.233µs ± 0.039µs 37.271µs 37.305µs 37.351µs 37.372µs 0.37% -1.021 0.781 0.21% 0.006µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26757840.598op/s 26869883.698op/s ± 56295.880op/s 26857621.194op/s ± 27784.521op/s 26890807.354op/s 26985266.362op/s 27037890.929op/s 27056462.221op/s 0.74% 1.032 0.804 0.21% 3980.720op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.397µs 45.587µs ± 0.075µs 45.593µs ± 0.047µs 45.637µs 45.705µs 45.763µs 45.917µs 0.71% 0.195 1.159 0.16% 0.005µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21778447.371op/s 21935945.191op/s ± 35903.771op/s 21933210.208op/s ± 22456.116op/s 21960241.958op/s 21995695.614op/s 22012786.630op/s 22027655.477op/s 0.43% -0.180 1.117 0.16% 2538.780op/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 [494.069µs; 494.427µs] or [-0.036%; +0.036%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2022572.199op/s; 2024006.187op/s] or [-0.035%; +0.035%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [370.541µs; 370.618µs] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2698196.381op/s; 2698760.975op/s] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [167.575µs; 167.615µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5966066.895op/s; 5967492.724op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.206µs; 37.227µs] or [-0.029%; +0.029%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26862081.630op/s; 26877685.765op/s] or [-0.029%; +0.029%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.577µs; 45.598µs] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21930969.274op/s; 21940921.109op/s] or [-0.023%; +0.023%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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.899µs 3.915µs ± 0.006µs 3.915µs ± 0.002µs 3.917µs 3.920µs 3.922µs 3.969µs 1.39% 6.710 57.807 0.15% 0.000µs 1 200
credit_card/is_card_number/ throughput 251928972.996op/s 255398880.599op/s ± 377000.241op/s 255443157.123op/s ± 116989.095op/s 255550819.707op/s 255660895.553op/s 255742805.585op/s 256461725.899op/s 0.40% -6.644 57.089 0.15% 26657.943op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.668µs 80.215µs ± 0.114µs 80.218µs ± 0.037µs 80.253µs 80.319µs 80.394µs 81.325µs 1.38% 3.664 46.555 0.14% 0.008µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12296301.922op/s 12466459.179op/s ± 17667.919op/s 12465983.448op/s ± 5687.558op/s 12472244.268op/s 12485058.509op/s 12494972.960op/s 12552106.304op/s 0.69% -3.515 45.253 0.14% 1249.311op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 67.826µs 67.940µs ± 0.073µs 67.934µs ± 0.032µs 67.969µs 68.036µs 68.113µs 68.600µs 0.98% 3.906 32.361 0.11% 0.005µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 14577345.623op/s 14718901.542op/s ± 15697.948op/s 14720190.075op/s ± 6962.413op/s 14726630.821op/s 14739066.929op/s 14741883.795op/s 14743667.396op/s 0.16% -3.846 31.646 0.11% 1110.013op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.894µs 3.915µs ± 0.003µs 3.916µs ± 0.001µs 3.917µs 3.919µs 3.922µs 3.934µs 0.47% -0.675 17.260 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254193875.351op/s 255396214.871op/s ± 202001.102op/s 255385413.652op/s ± 93421.541op/s 255487329.698op/s 255643641.296op/s 255743172.258op/s 256836343.640op/s 0.57% 0.720 17.381 0.08% 14283.635op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 64.603µs 64.718µs ± 0.058µs 64.712µs ± 0.037µs 64.753µs 64.825µs 64.845µs 64.904µs 0.30% 0.504 -0.169 0.09% 0.004µs 1 200
credit_card/is_card_number/378282246310005 throughput 15407324.940op/s 15451724.096op/s ± 13823.145op/s 15453190.740op/s ± 8955.610op/s 15461372.083op/s 15471527.979op/s 15476529.904op/s 15479262.432op/s 0.17% -0.499 -0.175 0.09% 977.444op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.456µs 45.698µs ± 0.098µs 45.698µs ± 0.069µs 45.774µs 45.847µs 45.913µs 45.964µs 0.58% 0.016 -0.294 0.21% 0.007µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21756360.159op/s 21882850.258op/s ± 46909.551op/s 21882629.569op/s ± 33211.435op/s 21913489.947op/s 21959395.670op/s 21981006.610op/s 21999331.381op/s 0.53% -0.005 -0.297 0.21% 3317.006op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.555µs 6.625µs ± 0.016µs 6.630µs ± 0.009µs 6.637µs 6.642µs 6.646µs 6.649µs 0.28% -1.346 2.197 0.25% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 150398226.834op/s 150953908.607op/s ± 376519.249op/s 150822012.480op/s ± 211399.075op/s 151147860.972op/s 151586619.055op/s 152161102.500op/s 152545182.550op/s 1.14% 1.364 2.278 0.25% 26623.931op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.895µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.916µs 3.921µs 3.924µs 3.925µs 0.28% -0.404 7.336 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254747425.157op/s 255421418.739op/s ± 209071.536op/s 255455116.539op/s ± 103798.822op/s 255551908.982op/s 255674793.369op/s 255705932.540op/s 256732392.504op/s 0.50% 0.426 7.461 0.08% 14783.590op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.078µs 65.724µs ± 0.079µs 65.732µs ± 0.048µs 65.775µs 65.820µs 65.870µs 65.884µs 0.23% -2.695 20.098 0.12% 0.006µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15178155.836op/s 15215263.479op/s ± 18462.444op/s 15213359.160op/s ± 11210.073op/s 15225852.004op/s 15239750.791op/s 15251123.444op/s 15366120.416op/s 1.00% 2.749 20.654 0.12% 1305.492op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.363µs 53.442µs ± 0.035µs 53.445µs ± 0.021µs 53.462µs 53.491µs 53.547µs 53.588µs 0.27% 0.553 1.697 0.07% 0.002µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18660910.901op/s 18712054.357op/s ± 12192.658op/s 18710915.461op/s ± 7297.181op/s 18719994.954op/s 18731798.272op/s 18735679.345op/s 18739561.167op/s 0.15% -0.547 1.677 0.06% 862.151op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.895µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.917µs 3.919µs 3.921µs 3.923µs 0.21% -1.427 10.699 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254893328.389op/s 255443648.605op/s ± 182044.620op/s 255434021.393op/s ± 118282.761op/s 255565705.944op/s 255680578.247op/s 255726608.561op/s 256718437.046op/s 0.50% 1.450 10.872 0.07% 12872.499op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.150µs 50.215µs ± 0.057µs 50.206µs ± 0.023µs 50.231µs 50.285µs 50.364µs 50.661µs 0.91% 4.702 32.382 0.11% 0.004µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19738950.407op/s 19914526.876op/s ± 22372.121op/s 19918062.072op/s ± 9180.181op/s 19926690.205op/s 19935531.382op/s 19938734.192op/s 19940270.913op/s 0.11% -4.661 31.950 0.11% 1581.948op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.438µs 45.716µs ± 0.107µs 45.717µs ± 0.080µs 45.792µs 45.887µs 45.936µs 45.945µs 0.50% -0.064 -0.532 0.23% 0.008µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21765290.265op/s 21874467.855op/s ± 51193.959op/s 21873823.595op/s ± 38398.088op/s 21913556.275op/s 21959587.254op/s 21980386.470op/s 22008015.339op/s 0.61% 0.075 -0.529 0.23% 3619.960op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.565µs 6.625µs ± 0.016µs 6.631µs ± 0.010µs 6.638µs 6.644µs 6.648µs 6.651µs 0.30% -1.013 0.935 0.24% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 150358207.782op/s 150933639.048op/s ± 365188.140op/s 150804122.414op/s ± 232146.889op/s 151169265.771op/s 151585540.056op/s 152085138.463op/s 152320252.777op/s 1.01% 1.027 0.985 0.24% 25822.701op/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.915µs; 3.916µs] or [-0.021%; +0.021%] None None None
credit_card/is_card_number/ throughput [255346631.992op/s; 255451129.207op/s] or [-0.020%; +0.020%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [80.200µs; 80.231µs] or [-0.020%; +0.020%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12464010.576op/s; 12468907.783op/s] or [-0.020%; +0.020%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [67.930µs; 67.950µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14716725.957op/s; 14721077.126op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/37828224631 execution_time [3.915µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255368219.461op/s; 255424210.281op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [64.710µs; 64.726µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/378282246310005 throughput [15449808.341op/s; 15453639.851op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.685µs; 45.712µs] or [-0.030%; +0.030%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21876349.045op/s; 21889351.470op/s] or [-0.030%; +0.030%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.622µs; 6.627µs] or [-0.034%; +0.034%] None None None
credit_card/is_card_number/x371413321323331 throughput [150901726.660op/s; 151006090.553op/s] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.915µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255392443.435op/s; 255450394.044op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.713µs; 65.735µs] or [-0.017%; +0.017%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15212704.762op/s; 15217822.196op/s] or [-0.017%; +0.017%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.437µs; 53.446µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18710364.571op/s; 18713744.142op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.914µs; 3.915µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255418418.971op/s; 255468878.238op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.207µs; 50.223µs] or [-0.016%; +0.016%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19911426.315op/s; 19917627.437op/s] or [-0.016%; +0.016%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.701µs; 45.730µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21867372.865op/s; 21881562.846op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.623µs; 6.628µs] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [150883027.484op/s; 150984250.612op/s] or [-0.034%; +0.034%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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.432ms 3.473ms ± 0.028ms 3.464ms ± 0.011ms 3.481ms 3.538ms 3.560ms 3.572ms 3.14% 1.547 1.833 0.80% 0.002ms 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.469ms; 3.477ms] or [-0.111%; +0.111%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 13.898ms 13.935ms ± 0.028ms 13.930ms ± 0.010ms 13.941ms 13.979ms 14.043ms 14.156ms 1.62% 3.548 19.903 0.20% 0.002ms 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 [13.932ms; 13.939ms] or [-0.028%; +0.028%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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.636µs 34.182µs ± 0.893µs 33.764µs ± 0.061µs 33.924µs 36.039µs 36.094µs 38.063µs 12.73% 1.827 1.952 2.61% 0.063µ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 [34.058µs; 34.306µs] or [-0.362%; +0.362%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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.275ms 4.279ms ± 0.007ms 4.278ms ± 0.002ms 4.280ms 4.283ms 4.285ms 4.372ms 2.18% 11.588 149.815 0.16% 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.278ms; 4.280ms] or [-0.023%; +0.023%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 88.229µs 88.680µs ± 0.200µs 88.696µs ± 0.092µs 88.770µs 88.872µs 88.991µs 90.577µs 2.12% 4.103 38.913 0.23% 0.014µ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 [88.652µs; 88.707µs] or [-0.031%; +0.031%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 163.699µs 164.372µs ± 0.273µs 164.337µs ± 0.131µs 164.486µs 164.822µs 165.222µs 165.775µs 0.88% 1.333 4.452 0.17% 0.019µ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 [164.334µs; 164.410µs] or [-0.023%; +0.023%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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.968µs 5.039µs ± 0.053µs 5.010µs ± 0.029µs 5.075µs 5.133µs 5.138µs 5.141µs 2.60% 0.597 -1.116 1.04% 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.031µs; 5.046µs] or [-0.145%; +0.145%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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.399µs 2.450µs ± 0.051µs 2.440µs ± 0.020µs 2.456µs 2.553µs 2.644µs 2.645µs 8.37% 2.416 6.037 2.08% 0.004µ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.443µs; 2.457µs] or [-0.289%; +0.289%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 1.224µs 3.249µs ± 1.451µs 3.016µs ± 0.026µs 3.053µs 3.716µs 14.398µs 14.924µs 394.79% 7.294 54.501 44.54% 0.103µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.048µs; 3.450µs] or [-6.188%; +6.188%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 17.559µs 25.546µs ± 9.540µs 18.093µs ± 0.492µs 33.873µs 42.521µs 43.863µs 63.372µs 250.26% 0.881 0.280 37.25% 0.675µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.224µs; 26.868µs] or [-5.176%; +5.176%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f51c099 1773235972 florian/heap-live-tracking
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 732.929µs 735.125µs ± 0.934µs 735.089µs ± 0.513µs 735.595µs 736.422µs 737.432µs 740.614µs 0.75% 1.105 5.355 0.13% 0.066µ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 [734.995µs; 735.254µs] or [-0.018%; +0.018%] None None None

Baseline

Omitted due to size.

@realFlowControl realFlowControl changed the title feat(profiling): add heap-live allocation tracking to Profile feat(profiling)!: add heap-live allocation tracking to Profile Feb 9, 2026
@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch from 061d9fc to 18e7883 Compare February 9, 2026 15:38
@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Feb 9, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.63 MB 8.70 MB +.72% (+64.00 KB) 🔍
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 100.28 MB 100.51 MB +.23% (+236.40 KB) 🔍
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 116.94 MB 117.22 MB +.23% (+283.99 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.21 MB 11.28 MB +.62% (+71.53 KB) 🔍
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.16 MB 27.24 MB +.29% (+81.50 KB) 🔍
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.26 KB 77.22 KB +1.25% (+984 B) ⚠️
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.01 MB 186.62 MB +.32% (+624.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 917.15 MB 918.79 MB +.17% (+1.64 MB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.93 MB 9.95 MB +.20% (+20.50 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.26 KB 77.22 KB +1.25% (+984 B) ⚠️
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.77 MB 24.83 MB +.25% (+64.00 KB) 🔍
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.43 MB 51.56 MB +.24% (+129.71 KB) 🔍
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.97 MB 23.04 MB +.31% (+73.00 KB) 🔍
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.44 KB 78.42 KB +1.25% (+998 B) ⚠️
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.26 MB 190.84 MB +.30% (+592.00 KB) 🔍
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 900.80 MB 902.29 MB +.16% (+1.48 MB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.53 MB 7.55 MB +.22% (+17.00 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.44 KB 78.42 KB +1.25% (+998 B) ⚠️
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.51 MB 26.59 MB +.29% (+80.00 KB) 🔍
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.05 MB 47.18 MB +.26% (+127.19 KB) 🔍
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 87.50 MB 87.72 MB +.25% (+225.85 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.21 MB 10.23 MB +.19% (+20.00 KB) 🔍
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 109.81 MB 110.06 MB +.22% (+256.47 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.95 MB 11.97 MB +.13% (+16.64 KB) 🔍

@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch 2 times, most recently from d7c971a to 4276bdc Compare February 10, 2026 06:21
@github-actions
Copy link

github-actions bot commented Feb 10, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/florian/heap-live-tracking

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-profiling/src/internal/profile/mod.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 28 28 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 59 59 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 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 208 208 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.

@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch 3 times, most recently from 9f929cb to e641308 Compare February 10, 2026 09:35
@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch 6 times, most recently from d834f50 to 46b2d6b Compare March 3, 2026 12:16
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch 4 times, most recently from 63a2560 to c70e869 Compare March 11, 2026 13:27
@realFlowControl realFlowControl force-pushed the florian/heap-live-tracking branch from c70e869 to f51c099 Compare March 11, 2026 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants