Skip to content

Return agent response length.#1170

Merged
dd-mergequeue[bot] merged 2 commits into
mainfrom
julio/return-agent-response-length
Aug 6, 2025
Merged

Return agent response length.#1170
dd-mergequeue[bot] merged 2 commits into
mainfrom
julio/return-agent-response-length

Conversation

@hoolioh

@hoolioh hoolioh commented Aug 4, 2025

Copy link
Copy Markdown
Contributor

What does this PR do?

The calling code will need to deserialize the response in order to get the sample rates for that it will need the length of the response which can be computed by iterating over the response looking for the NUL character. This results in extra computation in the calling code and this PR address this situation. Moreover the FFI layer was making an additional copy of the payload to turn it into a CString, this was also removed.

Motivation

Avoid performance penalties while deserializing the response.

@hoolioh
hoolioh requested a review from a team as a code owner August 4, 2025 09:24
@codecov-commenter

codecov-commenter commented Aug 4, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.44%. Comparing base (f8a01a5) to head (4066a4a).
⚠️ Report is 7 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1170      +/-   ##
==========================================
+ Coverage   71.42%   71.44%   +0.02%     
==========================================
  Files         348      348              
  Lines       54522    54719     +197     
==========================================
+ Hits        38942    39096     +154     
- Misses      15580    15623      +43     
Components Coverage Δ
datadog-crashtracker 43.84% <ø> (+0.02%) ⬆️
datadog-crashtracker-ffi 5.93% <ø> (ø)
datadog-alloc 98.73% <ø> (ø)
data-pipeline 90.46% <100.00%> (+0.02%) ⬆️
data-pipeline-ffi 88.67% <100.00%> (+0.17%) ⬆️
ddcommon 83.85% <ø> (+0.67%) ⬆️
ddcommon-ffi 70.01% <ø> (ø)
ddtelemetry 60.08% <ø> (ø)
ddtelemetry-ffi 21.32% <ø> (ø)
dogstatsd-client 83.26% <ø> (ø)
datadog-ipc 82.39% <ø> (-0.19%) ⬇️
datadog-profiling 77.13% <ø> (ø)
datadog-profiling-ffi 62.12% <ø> (ø)
datadog-sidecar 37.47% <ø> (+0.21%) ⬆️
datdog-sidecar-ffi 12.02% <ø> (-0.11%) ⬇️
spawn-worker 55.35% <ø> (ø)
tinybytes 92.22% <ø> (ø)
datadog-trace-normalization 98.24% <ø> (ø)
datadog-trace-obfuscation 94.17% <ø> (ø)
datadog-trace-protobuf 77.10% <ø> (ø)
datadog-trace-utils 89.95% <ø> (ø)
datadog-tracer-flare 54.62% <ø> (ø)
datadog-log 76.31% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@VianneyRuhlmann VianneyRuhlmann left a comment

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.

LGTM

Comment thread data-pipeline-ffi/src/response.rs Outdated
#[no_mangle]
pub unsafe extern "C" fn ddog_trace_exporter_response_get_body(
response: *const ExporterResponse,
out_len: Option<&mut usize>,

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.

Would it be simpler if we turned ExporterResponse to Repr(C) and access fields directly ?

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.

I thought about that but changing the ExporterResponse in any way will result in an ABI incompatibility, for example returning the headers or parsing headers info. Probably it won't matter too much because tracers always recompile the bindings with each new version but I think it's a good practice to return opaque pointers for types that are subject to change.

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.

Ok, on compatibility note you could add a new getter to retrieve len instead of modifying the existing signature. Although since dotnet is the only tracer using the bindings for now both are fine.

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.

Indeed at first I thought about just adding a new getter but since .Net was the only one using the API I decided to change it in order to reduce the performance overhead of crossing the managed side boundary two times for each agent response.

@pr-commenter

pr-commenter Bot commented Aug 6, 2025

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2025-08-06 09:58:38

Comparing candidate commit 4066a4a in PR branch julio/return-agent-response-length with baseline commit fdab508 in branch main.

Found 2 performance improvements and 0 performance regressions! Performance is the same for 51 metrics, 2 unstable metrics.

scenario:credit_card/is_card_number/378282246310005

  • 🟩 execution_time [-12.478µs; -12.333µs] or [-14.770%; -14.599%]
  • 🟩 throughput [+2026358.112op/s; +2047849.871op/s] or [+17.118%; +17.300%]

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 4066a4a 1754473482 julio/return-agent-response-length
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 86.222µs 86.494µs ± 0.263µs 86.467µs ± 0.053µs 86.534µs 86.608µs 86.736µs 90.012µs 4.10% 12.034 158.520 0.30% 0.019µ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 [86.457µs; 86.530µs] or [-0.042%; +0.042%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 59.621ms 60.535ms ± 2.241ms 60.262ms ± 0.055ms 60.309ms 60.733ms 74.203ms 80.198ms 33.08% 7.062 50.442 3.69% 0.158ms 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 [60.224ms; 60.845ms] or [-0.513%; +0.513%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 535.571µs 536.751µs ± 1.419µs 536.551µs ± 0.281µs 536.851µs 537.431µs 542.848µs 549.361µs 2.39% 7.158 57.068 0.26% 0.100µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1820298.036op/s 1863073.794op/s ± 4833.611op/s 1863756.648op/s ± 975.363op/s 1864707.619op/s 1865718.930op/s 1866058.211op/s 1867164.841op/s 0.18% -7.097 56.264 0.26% 341.788op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 379.209µs 379.992µs ± 0.340µs 379.961µs ± 0.241µs 380.231µs 380.579µs 380.874µs 380.967µs 0.26% 0.333 -0.191 0.09% 0.024µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2624898.071op/s 2631635.762op/s ± 2357.312op/s 2631847.552op/s ± 1670.828op/s 2633329.705op/s 2635172.490op/s 2636033.911op/s 2637069.120op/s 0.20% -0.329 -0.196 0.09% 166.687op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 194.247µs 194.595µs ± 0.189µs 194.567µs ± 0.115µs 194.699µs 194.960µs 195.162µs 195.302µs 0.38% 0.875 0.976 0.10% 0.013µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5120263.537op/s 5138871.428op/s ± 4988.823op/s 5139609.026op/s ± 3031.137op/s 5142191.925op/s 5145505.833op/s 5147327.011op/s 5148083.958op/s 0.16% -0.869 0.957 0.10% 352.763op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.841µs 37.057µs ± 0.111µs 37.043µs ± 0.076µs 37.136µs 37.254µs 37.289µs 37.373µs 0.89% 0.276 -0.608 0.30% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26757331.549op/s 26985829.659op/s ± 80917.987op/s 26995916.145op/s ± 55668.815op/s 27044815.433op/s 27110148.461op/s 27133992.887op/s 27143333.767op/s 0.55% -0.264 -0.618 0.30% 5721.766op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.793µs 45.895µs ± 0.053µs 45.893µs ± 0.037µs 45.928µs 45.987µs 46.013µs 46.072µs 0.39% 0.365 -0.179 0.12% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21705026.281op/s 21788703.604op/s ± 25142.935op/s 21789815.445op/s ± 17546.168op/s 21808494.885op/s 21826175.755op/s 21835272.405op/s 21837531.194op/s 0.22% -0.359 -0.188 0.12% 1777.874op/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 [536.554µs; 536.948µs] or [-0.037%; +0.037%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1862403.902op/s; 1863743.685op/s] or [-0.036%; +0.036%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [379.945µs; 380.039µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2631309.062op/s; 2631962.463op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [194.569µs; 194.622µs] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5138180.025op/s; 5139562.831op/s] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.041µs; 37.072µs] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26974615.204op/s; 26997044.114op/s] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.888µs; 45.903µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21785219.035op/s; 21792188.173op/s] or [-0.016%; +0.016%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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.813ms 14.880ms ± 0.033ms 14.874ms ± 0.015ms 14.890ms 14.930ms 14.987ms 15.084ms 1.41% 2.582 10.366 0.22% 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 [14.876ms; 14.885ms] or [-0.031%; +0.031%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 204.936µs 205.410µs ± 0.280µs 205.373µs ± 0.196µs 205.580µs 205.921µs 206.156µs 206.374µs 0.49% 0.685 0.127 0.14% 0.020µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4845561.479op/s 4868325.731op/s ± 6633.388op/s 4869192.435op/s ± 4658.152op/s 4873376.026op/s 4877023.770op/s 4878490.340op/s 4879562.506op/s 0.21% -0.679 0.112 0.14% 469.051op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.218µs 18.341µs ± 0.121µs 18.301µs ± 0.037µs 18.349µs 18.547µs 18.866µs 19.003µs 3.83% 2.434 7.743 0.66% 0.009µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 52623974.055op/s 54525752.370op/s ± 353768.943op/s 54641696.338op/s ± 109164.905op/s 54716244.701op/s 54877193.097op/s 54887911.558op/s 54890358.834op/s 0.46% -2.361 7.241 0.65% 25015.242op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.936µs 11.014µs ± 0.035µs 11.010µs ± 0.023µs 11.036µs 11.078µs 11.100µs 11.114µs 0.95% 0.307 -0.091 0.32% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 89976606.082op/s 90794067.752op/s ± 290449.989op/s 90827552.540op/s ± 190964.403op/s 90985868.094op/s 91221694.938op/s 91437008.650op/s 91439528.338op/s 0.67% -0.290 -0.101 0.32% 20537.916op/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 [205.371µs; 205.449µs] or [-0.019%; +0.019%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4867406.407op/s; 4869245.055op/s] or [-0.019%; +0.019%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.324µs; 18.357µs] or [-0.091%; +0.091%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [54476723.397op/s; 54574781.344op/s] or [-0.090%; +0.090%] None None None
normalization/normalize_name/normalize_name/good execution_time [11.009µs; 11.019µs] or [-0.044%; +0.044%] None None None
normalization/normalize_name/normalize_name/good throughput [90753814.177op/s; 90834321.327op/s] or [-0.044%; +0.044%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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.171µs 3.223µs ± 1.437µs 3.013µs ± 0.037µs 3.049µs 3.742µs 13.855µs 14.973µs 396.93% 7.340 55.128 44.47% 0.102µ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.024µs; 3.422µs] or [-6.179%; +6.179%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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.352ns 256.064ns ± 13.690ns 249.574ns ± 3.017ns 260.362ns 288.783ns 298.025ns 300.997ns 20.60% 1.725 1.970 5.33% 0.968ns 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.167ns; 257.962ns] or [-0.741%; +0.741%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 5.044µs 5.103µs ± 0.032µs 5.101µs ± 0.030µs 5.138µs 5.149µs 5.154µs 5.161µs 1.18% 0.155 -1.405 0.62% 0.002µ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.099µs; 5.108µs] or [-0.087%; +0.087%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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.394µs 2.422µs ± 0.027µs 2.414µs ± 0.008µs 2.425µs 2.503µs 2.514µs 2.519µs 4.33% 2.355 5.035 1.12% 0.002µ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.418µs; 2.426µs] or [-0.156%; +0.156%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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.480µs 33.980µs ± 0.774µs 33.664µs ± 0.132µs 33.784µs 35.584µs 35.677µs 37.302µs 10.81% 1.778 1.815 2.27% 0.055µ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.873µs; 34.088µs] or [-0.316%; +0.316%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 8.057ms 8.075ms ± 0.011ms 8.074ms ± 0.006ms 8.080ms 8.094ms 8.112ms 8.115ms 0.51% 1.111 1.922 0.13% 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 [8.074ms; 8.077ms] or [-0.018%; +0.018%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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.892µs 3.911µs ± 0.003µs 3.910µs ± 0.002µs 3.912µs 3.915µs 3.919µs 3.920µs 0.24% -0.842 10.190 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255116777.535op/s 255701474.055op/s ± 182807.710op/s 255730713.280op/s ± 106933.445op/s 255812608.711op/s 255909212.181op/s 255953360.300op/s 256945646.801op/s 0.48% 0.867 10.348 0.07% 12926.457op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.047µs 80.506µs ± 0.832µs 80.438µs ± 0.493µs 80.935µs 81.989µs 83.275µs 84.051µs 4.49% 0.995 1.840 1.03% 0.059µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 11897518.016op/s 12422725.194op/s ± 127066.186op/s 12431953.776op/s ± 76336.167op/s 12507808.368op/s 12597016.181op/s 12642822.659op/s 12650779.582op/s 1.76% -0.910 1.553 1.02% 8984.936op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 74.490µs 74.924µs ± 0.186µs 74.911µs ± 0.099µs 75.010µs 75.306µs 75.492µs 75.642µs 0.98% 0.762 1.644 0.25% 0.013µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13220086.521op/s 13346904.111op/s ± 33075.987op/s 13349119.833op/s ± 17590.499op/s 13366832.880op/s 13398084.314op/s 13419267.989op/s 13424697.416op/s 0.57% -0.739 1.601 0.25% 2338.825op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.907µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.916µs 3.918µs 3.923µs 0.30% 0.934 1.509 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254924367.121op/s 255677124.062op/s ± 171313.021op/s 255690283.769op/s ± 112501.065op/s 255796825.525op/s 255908472.000op/s 255953746.920op/s 255975942.066op/s 0.11% -0.929 1.490 0.07% 12113.660op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 71.630µs 72.074µs ± 0.191µs 72.066µs ± 0.107µs 72.163µs 72.432µs 72.544µs 72.600µs 0.74% 0.290 0.200 0.26% 0.014µs 1 200
credit_card/is_card_number/378282246310005 throughput 13774044.626op/s 13874725.316op/s ± 36750.311op/s 13876239.856op/s ± 20650.572op/s 13896965.252op/s 13938341.346op/s 13953123.295op/s 13960633.825op/s 0.61% -0.273 0.191 0.26% 2598.639op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.121µs 52.171µs ± 0.026µs 52.168µs ± 0.019µs 52.186µs 52.217µs 52.232µs 52.242µs 0.14% 0.461 -0.343 0.05% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19141658.140op/s 19167916.375op/s ± 9412.693op/s 19168662.113op/s ± 7090.408op/s 19175817.377op/s 19181377.280op/s 19185157.135op/s 19186185.946op/s 0.09% -0.459 -0.346 0.05% 665.578op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.690µs 5.900µs ± 0.071µs 5.909µs ± 0.050µs 5.947µs 6.003µs 6.034µs 6.050µs 2.38% -0.464 0.026 1.21% 0.005µs 1 200
credit_card/is_card_number/x371413321323331 throughput 165295372.481op/s 169514983.425op/s ± 2066624.695op/s 169221662.569op/s ± 1436597.994op/s 170779471.487op/s 172953962.225op/s 175183645.434op/s 175749752.284op/s 3.86% 0.530 0.119 1.22% 146132.434op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.890µs 3.910µs ± 0.003µs 3.910µs ± 0.001µs 3.912µs 3.915µs 3.918µs 3.919µs 0.21% -1.631 16.274 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255196217.148op/s 255729562.258op/s ± 178228.382op/s 255742773.007op/s ± 95768.626op/s 255837135.122op/s 255923319.973op/s 255968755.698op/s 257096445.051op/s 0.53% 1.664 16.538 0.07% 12602.650op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.226µs 64.409µs ± 0.063µs 64.405µs ± 0.035µs 64.439µs 64.510µs 64.581µs 64.729µs 0.50% 1.241 5.147 0.10% 0.004µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15448957.091op/s 15525698.364op/s ± 15149.855op/s 15526797.368op/s ± 8412.263op/s 15535189.133op/s 15545436.143op/s 15557575.567op/s 15569970.198op/s 0.28% -1.224 5.073 0.10% 1071.257op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 57.373µs 57.550µs ± 0.109µs 57.531µs ± 0.058µs 57.603µs 57.720µs 57.932µs 58.030µs 0.87% 1.372 3.128 0.19% 0.008µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 17232580.312op/s 17376281.550op/s ± 32734.398op/s 17381809.069op/s ± 17437.544op/s 17398188.414op/s 17418050.327op/s 17426192.651op/s 17429794.491op/s 0.28% -1.353 3.051 0.19% 2314.671op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.891µs 3.910µs ± 0.002µs 3.910µs ± 0.001µs 3.911µs 3.914µs 3.916µs 3.916µs 0.16% -1.964 17.624 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255351649.280op/s 255759197.800op/s ± 159441.677op/s 255766537.666op/s ± 86129.621op/s 255848564.868op/s 255941879.153op/s 255989474.711op/s 257012614.826op/s 0.49% 1.993 17.885 0.06% 11274.229op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.563µs 54.787µs ± 0.127µs 54.756µs ± 0.070µs 54.849µs 55.028µs 55.231µs 55.284µs 0.96% 1.275 2.215 0.23% 0.009µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 18088312.479op/s 18252599.955op/s ± 42167.221op/s 18262737.626op/s ± 23245.567op/s 18280567.757op/s 18303870.904op/s 18316268.224op/s 18327333.385op/s 0.35% -1.257 2.151 0.23% 2981.673op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.122µs 52.186µs ± 0.037µs 52.178µs ± 0.023µs 52.209µs 52.264µs 52.293µs 52.314µs 0.26% 0.969 0.800 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19115452.354op/s 19162270.440op/s ± 13512.766op/s 19165007.571op/s ± 8370.331op/s 19172363.996op/s 19179451.424op/s 19182297.732op/s 19185693.229op/s 0.11% -0.965 0.789 0.07% 955.497op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.693µs 5.880µs ± 0.077µs 5.890µs ± 0.055µs 5.936µs 5.985µs 6.015µs 6.028µs 2.34% -0.474 -0.433 1.31% 0.005µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 165884160.133op/s 170097525.091op/s ± 2240209.084op/s 169769396.503op/s ± 1580191.994op/s 171467201.680op/s 174386309.370op/s 175578397.125op/s 175656364.457op/s 3.47% 0.527 -0.368 1.31% 158406.703op/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.910µs; 3.911µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255676138.665op/s; 255726809.446op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [80.391µs; 80.621µs] or [-0.143%; +0.143%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12405115.042op/s; 12440335.345op/s] or [-0.142%; +0.142%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [74.898µs; 74.950µs] or [-0.034%; +0.034%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13342320.098op/s; 13351488.125op/s] or [-0.034%; +0.034%] None None None
credit_card/is_card_number/37828224631 execution_time [3.911µs; 3.912µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631 throughput [255653381.725op/s; 255700866.399op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/378282246310005 execution_time [72.048µs; 72.100µs] or [-0.037%; +0.037%] None None None
credit_card/is_card_number/378282246310005 throughput [13869632.076op/s; 13879818.555op/s] or [-0.037%; +0.037%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.167µs; 52.174µs] or [-0.007%; +0.007%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19166611.867op/s; 19169220.884op/s] or [-0.007%; +0.007%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.890µs; 5.910µs] or [-0.168%; +0.168%] None None None
credit_card/is_card_number/x371413321323331 throughput [169228569.118op/s; 169801397.732op/s] or [-0.169%; +0.169%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.910µs; 3.911µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255704861.518op/s; 255754262.997op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.401µs; 64.418µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15523598.740op/s; 15527797.988op/s] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [57.535µs; 57.565µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17371744.878op/s; 17380818.223op/s] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.910µs; 3.910µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255737100.717op/s; 255781294.883op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.769µs; 54.805µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18246755.984op/s; 18258443.926op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.181µs; 52.191µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19160397.700op/s; 19164143.179op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.869µs; 5.891µs] or [-0.181%; +0.181%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [169787053.658op/s; 170407996.525op/s] or [-0.183%; +0.183%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 146.026µs 147.080µs ± 0.323µs 147.068µs ± 0.184µs 147.254µs 147.588µs 147.864µs 148.306µs 0.84% 0.114 1.575 0.22% 0.023µ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 [147.035µs; 147.125µs] or [-0.030%; +0.030%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 4066a4a 1754473482 julio/return-agent-response-length
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 18.107µs 26.169µs ± 9.706µs 18.420µs ± 0.264µs 35.050µs 44.128µs 45.219µs 69.107µs 275.18% 0.934 0.549 37.00% 0.686µ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.824µs; 27.514µs] or [-5.140%; +5.140%] None None None

Baseline

Omitted due to size.

@hoolioh

hoolioh commented Aug 6, 2025

Copy link
Copy Markdown
Contributor Author

/merge

@dd-devflow-routing-codex

dd-devflow-routing-codex Bot commented Aug 6, 2025

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2025-08-06 11:09:28 UTC ℹ️ Start processing command /merge


2025-08-06 11:09:33 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in main is approximately 40m (p90).


2025-08-06 11:46:23 UTC ℹ️ MergeQueue: This merge request was merged

@dd-mergequeue
dd-mergequeue Bot merged commit 1fe3798 into main Aug 6, 2025
37 checks passed
@dd-mergequeue
dd-mergequeue Bot deleted the julio/return-agent-response-length branch August 6, 2025 11:46
andrewlock pushed a commit to DataDog/dd-trace-dotnet that referenced this pull request Aug 8, 2025
## Summary of changes

- Bump version from 19.1.0 to 20.0.0.
- Update GetResponseBody signature.

## Reason for change
API Changes:

- `ddog_trace_exporter_response_get_body` now returns the length which
prevents managed code to compute the payload's length manually.

Improvements:

- Avoid formatting the agent response into a null terminated string
before returning it to the managed code. This will boost the performance
by avoiding an additional copy of the response
([#1170](DataDog/libdatadog#1170)).
- Lower the severity of the info fetcher logs
[#1168](DataDog/libdatadog#1168).

## Other details
Libdd release
[page](https://github.com/DataDog/libdatadog/releases/tag/v20.0.0)
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.

3 participants