Skip to content

Conversation

@danielsn
Copy link
Contributor

@danielsn danielsn commented Jan 13, 2026

What does this PR do?

Uses reqwest instead of hyper for the profiler exporter.

Motivation

Using a high-level library rather than low-level networking makes the code clearer.

Additional Notes

Technically a breaking change since we change Rust APIs but we don't affect the FFI at all.

How to test the change?

Existing tests, plus a new end to end set of tests for the different endpoint types

@danielsn danielsn requested review from a team as code owners January 13, 2026 04:15
@danielsn danielsn force-pushed the dsn/profiler-reqwest branch from 6743cb4 to ec85a33 Compare January 13, 2026 04:15
@pr-commenter
Copy link

pr-commenter bot commented Jan 13, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-01-13 17:46:15

Comparing candidate commit 779821f in PR branch dsn/profiler-reqwest with baseline commit de271ed in branch main.

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

scenario:benching serializing traces from their internal representation to msgpack

  • 🟩 execution_time [-769.460µs; -748.941µs] or [-5.185%; -5.046%]

scenario:credit_card/is_card_number/ 378282246310005

  • 🟩 throughput [+545148.421op/s; +570241.643op/s] or [+4.084%; +4.272%]

scenario:credit_card/is_card_number/378282246310005

  • 🟩 execution_time [-3.566µs; -3.466µs] or [-4.953%; -4.814%]
  • 🟩 throughput [+702814.869op/s; +723738.531op/s] or [+5.061%; +5.211%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟩 execution_time [-7.346µs; -7.300µs] or [-14.074%; -13.986%]
  • 🟩 throughput [+3115943.525op/s; +3138428.592op/s] or [+16.263%; +16.380%]

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

  • 🟩 execution_time [-3.398µs; -3.174µs] or [-5.282%; -4.934%]
  • 🟩 throughput [+809704.943op/s; +869415.644op/s] or [+5.209%; +5.593%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟩 execution_time [-3.622µs; -3.589µs] or [-6.299%; -6.241%]
  • 🟩 throughput [+1157927.771op/s; +1168670.438op/s] or [+6.658%; +6.720%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟩 execution_time [-4.481µs; -4.434µs] or [-8.180%; -8.094%]
  • 🟩 throughput [+1608719.187op/s; +1624779.982op/s] or [+8.813%; +8.901%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟩 execution_time [-7.295µs; -7.253µs] or [-13.981%; -13.901%]
  • 🟩 throughput [+3094685.800op/s; +3115298.013op/s] or [+16.147%; +16.254%]

scenario:sql/obfuscate_sql_string

  • 🟩 execution_time [-3.872µs; -3.806µs] or [-4.325%; -4.251%]

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 779821f 1768325385 dsn/profiler-reqwest
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.938µs 5.020µs ± 0.041µs 5.017µs ± 0.025µs 5.040µs 5.094µs 5.097µs 5.101µs 1.67% 0.163 -0.548 0.81% 0.003µ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.014µs; 5.025µs] or [-0.112%; +0.112%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.893µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.918µs 3.921µs 3.924µs 0.33% 0.162 5.485 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254873496.226op/s 255667166.218op/s ± 214043.993op/s 255702505.899op/s ± 109923.664op/s 255789180.899op/s 255937981.380op/s 256004036.801op/s 256856883.403op/s 0.45% -0.143 5.548 0.08% 15135.196op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.608µs 79.163µs ± 0.652µs 79.127µs ± 0.448µs 79.609µs 80.258µs 80.707µs 81.390µs 2.86% 0.226 -0.027 0.82% 0.046µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12286446.801op/s 12633051.036op/s ± 103949.070op/s 12637843.332op/s ± 71160.130op/s 12706819.148op/s 12795350.976op/s 12865820.587op/s 12885225.111op/s 1.96% -0.179 -0.076 0.82% 7350.309op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.813µs 71.908µs ± 0.445µs 71.917µs ± 0.323µs 72.204µs 72.675µs 72.978µs 73.161µs 1.73% 0.195 -0.151 0.62% 0.031µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13668524.610op/s 13907125.191op/s ± 85968.368op/s 13904834.295op/s ± 62654.281op/s 13974777.275op/s 14037996.269op/s 14098825.372op/s 14121613.927op/s 1.56% -0.161 -0.171 0.62% 6078.882op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.892µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.922µs 3.923µs 0.30% -0.252 8.494 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254875071.344op/s 255626069.519op/s ± 207175.542op/s 255651208.973op/s ± 111926.159op/s 255743949.600op/s 255860366.881op/s 255972679.021op/s 256929278.131op/s 0.50% 0.278 8.610 0.08% 14649.523op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.839µs 68.488µs ± 0.326µs 68.455µs ± 0.219µs 68.697µs 69.092µs 69.259µs 69.340µs 1.29% 0.352 -0.356 0.47% 0.023µs 1 200
credit_card/is_card_number/378282246310005 throughput 14421590.504op/s 14601386.118op/s ± 69374.402op/s 14608155.010op/s ± 46876.142op/s 14649011.564op/s 14708616.293op/s 14723107.463op/s 14740689.563op/s 0.91% -0.330 -0.376 0.47% 4905.511op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.549µs 44.869µs ± 0.161µs 44.879µs ± 0.114µs 44.990µs 45.104µs 45.127µs 45.172µs 0.65% -0.255 -0.932 0.36% 0.011µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 22137840.320op/s 22287204.009op/s ± 80094.133op/s 22282178.714op/s ± 56609.394op/s 22338721.941op/s 22424537.585op/s 22442795.814op/s 22447213.314op/s 0.74% 0.266 -0.926 0.36% 5663.510op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.691µs 5.699µs ± 0.008µs 5.698µs ± 0.003µs 5.701µs 5.707µs 5.712µs 5.798µs 1.75% 9.207 109.194 0.14% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 172469961.482op/s 175463202.620op/s ± 246329.185op/s 175486961.324op/s ± 79129.370op/s 175561938.252op/s 175663935.733op/s 175694385.991op/s 175707000.417op/s 0.13% -9.095 107.343 0.14% 17418.104op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.891µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.916µs 3.919µs 3.925µs 0.35% -0.721 9.236 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254784838.339op/s 255668120.943op/s ± 202723.482op/s 255669600.886op/s ± 111011.446op/s 255780027.177op/s 255932782.383op/s 256001347.637op/s 256987946.491op/s 0.52% 0.747 9.361 0.08% 14334.715op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 59.576µs 61.044µs ± 0.802µs 60.941µs ± 0.586µs 61.633µs 62.392µs 62.732µs 63.869µs 4.80% 0.370 -0.261 1.31% 0.057µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15657052.477op/s 16384291.833op/s ± 214200.754op/s 16409185.024op/s ± 159379.861op/s 16562250.496op/s 16721576.867op/s 16754263.241op/s 16785255.343op/s 2.29% -0.309 -0.365 1.30% 15146.281op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.574µs 53.897µs ± 0.083µs 53.907µs ± 0.048µs 53.949µs 54.018µs 54.056µs 54.072µs 0.31% -0.956 2.085 0.15% 0.006µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18493896.815op/s 18553929.600op/s ± 28771.503op/s 18550543.324op/s ± 16456.631op/s 18569034.742op/s 18602291.451op/s 18644659.784op/s 18665680.798op/s 0.62% 0.970 2.126 0.15% 2034.452op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.893µs 3.912µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.916µs 3.918µs 3.921µs 0.24% -1.073 9.309 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255056161.731op/s 255653608.276op/s ± 183048.688op/s 255660065.912op/s ± 103922.478op/s 255762150.205op/s 255910372.411op/s 255976125.830op/s 256881113.673op/s 0.48% 1.095 9.452 0.07% 12943.497op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.164µs 50.327µs ± 0.072µs 50.319µs ± 0.044µs 50.371µs 50.439µs 50.485µs 50.754µs 0.86% 1.156 5.344 0.14% 0.005µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19702713.635op/s 19870245.329op/s ± 28245.255op/s 19873057.865op/s ± 17177.799op/s 19888893.184op/s 19911546.247op/s 19926764.485op/s 19934699.904op/s 0.31% -1.131 5.186 0.14% 1997.241op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.557µs 44.902µs ± 0.149µs 44.919µs ± 0.114µs 45.024µs 45.098µs 45.134µs 45.193µs 0.61% -0.412 -0.806 0.33% 0.011µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 22127206.432op/s 22270811.600op/s ± 73917.528op/s 22262307.687op/s ± 56485.457op/s 22330304.568op/s 22401371.198op/s 22439639.182op/s 22442991.029op/s 0.81% 0.423 -0.795 0.33% 5226.759op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.691µs 5.699µs ± 0.004µs 5.699µs ± 0.003µs 5.702µs 5.706µs 5.714µs 5.720µs 0.38% 1.180 3.120 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 174812661.255op/s 175464582.195op/s ± 131329.462op/s 175479261.495op/s ± 83084.519op/s 175554803.420op/s 175634950.484op/s 175680270.458op/s 175717291.292op/s 0.14% -1.171 3.080 0.07% 9286.395op/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.911µs; 3.912µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/ throughput [255637501.780op/s; 255696830.657op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.072µs; 79.253µs] or [-0.114%; +0.114%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12618644.695op/s; 12647457.378op/s] or [-0.114%; +0.114%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [71.847µs; 71.970µs] or [-0.086%; +0.086%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13895210.802op/s; 13919039.580op/s] or [-0.086%; +0.086%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.912µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255597356.981op/s; 255654782.056op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [68.443µs; 68.533µs] or [-0.066%; +0.066%] None None None
credit_card/is_card_number/378282246310005 throughput [14591771.493op/s; 14611000.743op/s] or [-0.066%; +0.066%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [44.847µs; 44.892µs] or [-0.050%; +0.050%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22276103.732op/s; 22298304.285op/s] or [-0.050%; +0.050%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.698µs; 5.700µs] or [-0.020%; +0.020%] None None None
credit_card/is_card_number/x371413321323331 throughput [175429063.764op/s; 175497341.476op/s] or [-0.019%; +0.019%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.911µs; 3.912µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255640025.418op/s; 255696216.468op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [60.933µs; 61.156µs] or [-0.182%; +0.182%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [16354605.668op/s; 16413977.997op/s] or [-0.181%; +0.181%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.886µs; 53.909µs] or [-0.021%; +0.021%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18549942.147op/s; 18557917.054op/s] or [-0.021%; +0.021%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255628239.489op/s; 255678977.064op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.317µs; 50.337µs] or [-0.020%; +0.020%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19866330.809op/s; 19874159.850op/s] or [-0.020%; +0.020%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [44.882µs; 44.923µs] or [-0.046%; +0.046%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22260567.341op/s; 22281055.858op/s] or [-0.046%; +0.046%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.699µs; 5.700µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [175446381.194op/s; 175482783.195op/s] or [-0.010%; +0.010%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.636ms 10.661ms ± 0.015ms 10.659ms ± 0.008ms 10.667ms 10.685ms 10.707ms 10.746ms 0.82% 1.963 7.621 0.14% 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.659ms; 10.663ms] or [-0.019%; +0.019%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.874µs 147.072µs ± 1.639µs 146.775µs ± 0.542µs 147.384µs 148.756µs 152.506µs 161.898µs 10.30% 5.323 40.067 1.11% 0.116µ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.844µs; 147.299µs] or [-0.154%; +0.154%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.582µs 26.004µs ± 9.591µs 18.313µs ± 0.542µs 34.453µs 43.441µs 44.755µs 61.368µs 235.10% 0.736 -0.385 36.79% 0.678µ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.675µs; 27.334µs] or [-5.111%; +5.111%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.336µs 2.388µs ± 0.016µs 2.389µs ± 0.008µs 2.394µs 2.421µs 2.431µs 2.437µs 2.02% 0.018 2.042 0.68% 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.386µs; 2.391µs] or [-0.094%; +0.094%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.921µs 161.819µs ± 0.344µs 161.788µs ± 0.101µs 161.904µs 162.144µs 162.512µs 165.569µs 2.34% 6.588 69.536 0.21% 0.024µ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 [161.771µs; 161.867µs] or [-0.029%; +0.029%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 85.213µs 85.695µs ± 0.190µs 85.700µs ± 0.089µs 85.778µs 85.896µs 86.262µs 87.268µs 1.83% 2.888 23.035 0.22% 0.013µ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 [85.669µs; 85.721µs] or [-0.031%; +0.031%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.258µs 3.256µs ± 1.442µs 3.031µs ± 0.025µs 3.058µs 3.703µs 14.243µs 14.899µs 391.58% 7.298 54.578 44.18% 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.056µs; 3.456µs] or [-6.138%; +6.138%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 186.579µs 187.058µs ± 0.459µs 186.928µs ± 0.144µs 187.100µs 188.196µs 189.111µs 189.309µs 1.27% 2.574 7.372 0.24% 0.032µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5282373.222op/s 5345958.784op/s ± 13030.683op/s 5349648.692op/s ± 4131.101op/s 5352937.219op/s 5357391.593op/s 5359177.653op/s 5359649.929op/s 0.19% -2.554 7.245 0.24% 921.408op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.586µs 17.699µs ± 0.095µs 17.687µs ± 0.029µs 17.721µs 17.774µs 17.811µs 18.872µs 6.70% 9.548 115.267 0.53% 0.007µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 52987875.932op/s 56501105.724op/s ± 288427.498op/s 56538327.805op/s ± 91557.761op/s 56614081.621op/s 56733220.341op/s 56808542.966op/s 56862201.562op/s 0.57% -9.132 108.415 0.51% 20394.904op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.118µs 10.172µs ± 0.024µs 10.171µs ± 0.017µs 10.188µs 10.212µs 10.223µs 10.241µs 0.69% 0.212 -0.307 0.23% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 97648736.780op/s 98313048.182op/s ± 230997.400op/s 98322887.198op/s ± 165282.099op/s 98485560.682op/s 98671555.768op/s 98800337.142op/s 98833243.610op/s 0.52% -0.201 -0.316 0.23% 16333.983op/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.995µs; 187.122µs] or [-0.034%; +0.034%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5344152.857op/s; 5347764.712op/s] or [-0.034%; +0.034%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.686µs; 17.712µs] or [-0.074%; +0.074%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [56461132.447op/s; 56541079.002op/s] or [-0.071%; +0.071%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.168µs; 10.175µs] or [-0.033%; +0.033%] None None None
normalization/normalize_name/normalize_name/good throughput [98281034.164op/s; 98345062.200op/s] or [-0.033%; +0.033%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 62.503ms 62.870ms ± 1.785ms 62.640ms ± 0.047ms 62.692ms 62.853ms 73.675ms 81.243ms 29.70% 8.545 74.609 2.83% 0.126ms 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 [62.623ms; 63.118ms] or [-0.393%; +0.393%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 242.339ns 255.471ns ± 15.641ns 247.753ns ± 3.442ns 267.077ns 285.587ns 301.139ns 302.618ns 22.14% 1.312 0.395 6.11% 1.106ns 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.303ns; 257.638ns] or [-0.849%; +0.849%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.667µs 34.292µs ± 1.029µs 33.823µs ± 0.060µs 33.944µs 36.483µs 36.506µs 37.711µs 11.49% 1.718 1.098 2.99% 0.073µ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.149µs; 34.435µs] or [-0.416%; +0.416%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 187.018ns 189.910ns ± 2.293ns 189.688ns ± 1.739ns 191.334ns 193.914ns 196.259ns 199.379ns 5.11% 1.056 1.399 1.20% 0.162ns 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 [189.592ns; 190.228ns] or [-0.167%; +0.167%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.023ms 14.082ms ± 0.043ms 14.073ms ± 0.015ms 14.090ms 14.160ms 14.249ms 14.357ms 2.02% 3.440 16.558 0.30% 0.003ms 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.076ms; 14.088ms] or [-0.042%; +0.042%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 3.912ms 3.917ms ± 0.008ms 3.915ms ± 0.001ms 3.916ms 3.921ms 3.948ms 4.009ms 2.39% 7.651 71.625 0.22% 0.001ms 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 [3.916ms; 3.918ms] or [-0.030%; +0.030%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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.417µs 496.250µs ± 0.648µs 496.164µs ± 0.261µs 496.461µs 496.845µs 497.473µs 503.628µs 1.50% 7.478 82.135 0.13% 0.046µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1985591.664op/s 2015115.677op/s ± 2606.995op/s 2015462.292op/s ± 1058.521op/s 2016325.741op/s 2017418.741op/s 2018017.248op/s 2018501.359op/s 0.15% -7.368 80.464 0.13% 184.342op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 371.188µs 372.134µs ± 0.318µs 372.119µs ± 0.200µs 372.340µs 372.655µs 372.900µs 372.999µs 0.24% 0.048 0.107 0.09% 0.022µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2680975.773op/s 2687203.485op/s ± 2295.617op/s 2687311.764op/s ± 1444.648op/s 2688639.475op/s 2690924.375op/s 2692045.585op/s 2694051.032op/s 0.25% -0.043 0.107 0.09% 162.325op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 169.283µs 169.915µs ± 0.185µs 169.908µs ± 0.119µs 170.029µs 170.221µs 170.402µs 170.620µs 0.42% 0.328 1.292 0.11% 0.013µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5860968.824op/s 5885311.768op/s ± 6411.179op/s 5885522.347op/s ± 4138.606op/s 5889622.314op/s 5894331.861op/s 5898203.062op/s 5907282.319op/s 0.37% -0.317 1.282 0.11% 453.339op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 37.260µs 37.381µs ± 0.059µs 37.371µs ± 0.042µs 37.417µs 37.491µs 37.531µs 37.571µs 0.54% 0.499 0.031 0.16% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26616457.811op/s 26751801.216op/s ± 42190.791op/s 26758866.371op/s ± 30160.944op/s 26782337.146op/s 26811040.491op/s 26831754.750op/s 26838087.768op/s 0.30% -0.490 0.016 0.16% 2983.339op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.183µs 46.296µs ± 0.059µs 46.291µs ± 0.040µs 46.335µs 46.400µs 46.452µs 46.486µs 0.42% 0.497 0.083 0.13% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21511733.442op/s 21600305.998op/s ± 27440.330op/s 21602607.653op/s ± 18654.164op/s 21620354.472op/s 21641573.141op/s 21649328.555op/s 21652836.424op/s 0.23% -0.490 0.070 0.13% 1940.324op/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.160µs; 496.340µs] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2014754.373op/s; 2015476.981op/s] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [372.090µs; 372.178µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2686885.334op/s; 2687521.635op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [169.889µs; 169.940µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5884423.240op/s; 5886200.295op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.373µs; 37.389µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26745953.978op/s; 26757648.454op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.288µs; 46.304µs] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21596503.032op/s; 21604108.964op/s] or [-0.018%; +0.018%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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/2597 execution_time 9.899ms 10.183ms ± 0.079ms 10.193ms ± 0.041ms 10.233ms 10.272ms 10.343ms 10.385ms 1.89% -1.146 2.476 0.77% 0.006ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [10.172ms; 10.194ms] or [-0.107%; +0.107%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 779821f 1768325385 dsn/profiler-reqwest
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 539.465µs 540.263µs ± 0.754µs 540.090µs ± 0.219µs 540.374µs 541.287µs 544.152µs 544.884µs 0.89% 3.538 15.586 0.14% 0.053µ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 [540.158µs; 540.367µs] or [-0.019%; +0.019%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Jan 13, 2026

Codecov Report

❌ Patch coverage is 86.18182% with 38 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.36%. Comparing base (de271ed) to head (779821f).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1444      +/-   ##
==========================================
+ Coverage   71.30%   71.36%   +0.06%     
==========================================
  Files         413      413              
  Lines       66157    66158       +1     
==========================================
+ Hits        47172    47216      +44     
+ Misses      18985    18942      -43     
Components Coverage Δ
libdd-crashtracker 58.75% <ø> (+0.07%) ⬆️
libdd-crashtracker-ffi 15.08% <ø> (+0.71%) ⬆️
libdd-alloc 98.73% <ø> (ø)
libdd-data-pipeline 86.62% <ø> (+0.58%) ⬆️
libdd-data-pipeline-ffi 80.98% <ø> (+3.97%) ⬆️
libdd-common 80.83% <ø> (-0.28%) ⬇️
libdd-common-ffi 74.19% <ø> (ø)
libdd-telemetry 60.26% <ø> (+0.03%) ⬆️
libdd-telemetry-ffi 21.17% <ø> (ø)
libdd-dogstatsd-client 83.75% <ø> (ø)
datadog-ipc 82.71% <ø> (+0.10%) ⬆️
libdd-profiling 80.68% <86.18%> (-0.37%) ⬇️
libdd-profiling-ffi 62.46% <85.71%> (+0.03%) ⬆️
datadog-sidecar 37.16% <ø> (+1.17%) ⬆️
datdog-sidecar-ffi 17.35% <ø> (+5.89%) ⬆️
spawn-worker 55.18% <ø> (ø)
libdd-tinybytes 92.44% <ø> (ø)
libdd-trace-normalization 82.33% <ø> (ø)
libdd-trace-obfuscation 94.17% <ø> (ø)
libdd-trace-protobuf 61.18% <ø> (ø)
libdd-trace-utils 89.74% <ø> (ø)
datadog-tracer-flare 59.74% <ø> (-1.33%) ⬇️
libdd-log 75.57% <ø> (ø)
🚀 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.

@danielsn danielsn changed the title refactor(profiling): Use reqwest instead of hyper for exporter refactor(profiling): use reqwest instead of hyper for exporter Jan 13, 2026
@danielsn danielsn force-pushed the dsn/profiler-reqwest branch from ec85a33 to 5b427a1 Compare January 13, 2026 17:27
@danielsn danielsn force-pushed the dsn/profiler-reqwest branch from 5b427a1 to 779821f Compare January 13, 2026 17:29
@danielsn danielsn changed the title refactor(profiling): use reqwest instead of hyper for exporter refactor!(profiling): use reqwest instead of hyper for exporter Jan 13, 2026
@danielsn danielsn changed the title refactor!(profiling): use reqwest instead of hyper for exporter refactor(profiling)!: use reqwest instead of hyper for exporter Jan 13, 2026
@dd-octo-sts
Copy link

dd-octo-sts bot commented Jan 13, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 7.57 MB 8.00 MB +5.77% (+447.96 KB) 🚨
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 87.80 MB 91.77 MB +4.52% (+3.97 MB) ⚠️
aarch64-apple-darwin
Artifact Baseline Commit Change
/aarch64-apple-darwin/lib/libdatadog_profiling.a 59.43 MB 63.01 MB +6.01% (+3.57 MB) 🚨
/aarch64-apple-darwin/lib/libdatadog_profiling.dylib 8.58 MB 9.20 MB +7.28% (+639.89 KB) 🚨
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 101.52 MB 106.14 MB +4.54% (+4.61 MB) ⚠️
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.71 MB 10.37 MB +6.78% (+675.17 KB) 🚨
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 20.43 MB 24.10 MB +17.95% (+3.66 MB) 🚨
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 73.49 KB 76.33 KB +3.86% (+2.83 KB) ⚠️
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 151.28 MB 169.28 MB +11.89% (+18.00 MB) 🚨
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 817.84 MB 864.61 MB +5.71% (+46.76 MB) 🚨
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 6.51 MB 8.84 MB +35.67% (+2.32 MB) 🚨
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 73.49 KB 76.33 KB +3.86% (+2.83 KB) ⚠️
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 20.14 MB 22.03 MB +9.38% (+1.89 MB) 🚨
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 39.52 MB 47.59 MB +20.42% (+8.07 MB) 🚨
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 17.43 MB 20.27 MB +16.29% (+2.84 MB) 🚨
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 74.62 KB 77.50 KB +3.86% (+2.88 KB) ⚠️
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 154.16 MB 172.90 MB +12.15% (+18.74 MB) 🚨
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 805.63 MB 849.26 MB +5.41% (+43.62 MB) 🚨
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 5.01 MB 6.86 MB +37.00% (+1.85 MB) 🚨
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 74.62 KB 77.50 KB +3.86% (+2.88 KB) ⚠️
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 21.47 MB 23.69 MB +10.33% (+2.21 MB) 🚨
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 37.29 MB 43.29 MB +16.09% (+6.00 MB) 🚨
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 76.05 MB 79.91 MB +5.06% (+3.85 MB) 🚨
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 9.00 MB 9.50 MB +5.64% (+519.96 KB) 🚨
x86_64-apple-darwin
Artifact Baseline Commit Change
/x86_64-apple-darwin/lib/libdatadog_profiling.a 60.76 MB 64.37 MB +5.93% (+3.60 MB) 🚨
/x86_64-apple-darwin/lib/libdatadog_profiling.dylib 9.63 MB 10.22 MB +6.22% (+613.98 KB) 🚨
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 95.61 MB 99.84 MB +4.42% (+4.23 MB) ⚠️
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.45 MB 11.08 MB +6.07% (+650.42 KB) 🚨

Copy link
Contributor

@taegyunkim taegyunkim left a comment

Choose a reason for hiding this comment

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

Overall looks good to me, though my knowledge on Rust/async/tokio is somewhat limited.

hyper = { workspace = true}
http-body-util = "0.1"
httparse = "1.9"
hyper = { workspace = true}
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we remove this?

/// [`send`]: ProfileExporter::send
#[allow(clippy::too_many_arguments)]
pub fn send_blocking(
&mut self,
Copy link
Contributor

Choose a reason for hiding this comment

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

One question I had in mind was why would this need to take self as mutable.
It's modifying self.runtime, and consulting with claude suggested using OnceLock but turns out that it won't be thread-safe given that we use new_current_thread().

Correct me, if my understanding is wrong.

process_tags: Option<&str>,
cancel: Option<&CancellationToken>,
) -> anyhow::Result<reqwest::StatusCode> {
if self.runtime.is_none() {
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not super familiar with programming in async/tokio, so also asked why it's necessary to create runtime only from send_blocking()

the async version send() expects the runtime to created by the caller, and it's only called from tests in this PR. The tests are marked using #[tokio::test] which provides a runtime.

send_blocking() is typically called from language runtimes via ffi layer, so it needs to create one to call send()

Copy link
Contributor

@morrisonlevi morrisonlevi left a comment

Choose a reason for hiding this comment

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

I need to review in depth still but I noticed the artifacts came up in size a fair bit. Maybe there's something we can do to trim it back down? Maybe features we can disable?

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.

5 participants