Skip to content

Conversation

@paullegranddc
Copy link
Contributor

@paullegranddc paullegranddc commented Oct 15, 2025

Motivation

Cloning is very cheap as long as we have a ByteString or a str slice, but if we want to use python strings we need to hold the GIL to clone them.
This is not possible in general... But there are no operations requiring us to actual clone the data.

Changes

  • use an indexmap for the shared dictionary. This datastructure is exactly what we want (O(1) access and insertion order iteration) and keep only one of each value
  • Use indices into the span slice while computing top level rather than copying the service string

# Motivation

Cloning is very cheap as long as we have a ByteString or a str slice, but if we want to use python strings we need to hold the GIL to clone them.
This is not possible in general... But there are no operations requiring us to actual clone the data.

# Changes

* use an indexmap for the shared dictionary. This datastructure is exactly what we want (O(1) access and insertion order iteration) and keep only one of each value
*  Use indices into the span slice while computing top level rather than copying the service string
@paullegranddc paullegranddc requested review from a team as code owners October 15, 2025 17:35
@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Oct 15, 2025

⚠️ Tests

⚠️ Warnings

🧪 1 Test failed

test_ddog_sidecar_register_app from datadog-sidecar-ffi::sidecar (Datadog)
thread 'test_ddog_sidecar_register_app' panicked at datadog-sidecar-ffi\tests\sidecar.rs:112:10

thread 'test_ddog_sidecar_register_app' panicked at datadog-sidecar-ffi\tests\sidecar.rs:112:10:
Called ffi::Option::unwrap_none but option was Some(Error("Os { code: 232, kind: BrokenPipe, message: "The pipe is being closed." }"))
stack backtrace:
   0:     0x7ff7959bd422 - std::backtrace_rs::backtrace::win64::trace
                               at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\..\..\backtrace\src\backtrace\win64.rs:85
   1:     0x7ff7959bd422 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff7959bd422 - std::sys::backtrace::_print_fmt
...

ℹ️ Info

❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: ddd1b20 | Docs | Was this helpful? Give us feedback!

@paullegranddc paullegranddc changed the title feat(span): Remove clone bound on spantext feat(span): remove clone bound on spantext Oct 15, 2025
# Motivation

When we serialize we store the uppper 64 bits  of the trace id in a meta tag. But at runtime, we don't want to split it as the trace id still needs to be readable.
@paullegranddc paullegranddc force-pushed the paullgdc/trace-utils/remove_clone_on_spantext branch from e990211 to 2445a48 Compare October 15, 2025 17:37
@pr-commenter
Copy link

pr-commenter bot commented Oct 15, 2025

Benchmarks

Comparison

Benchmark execution time: 2025-10-16 11:52:12

Comparing candidate commit ddd1b20 in PR branch paullgdc/trace-utils/remove_clone_on_spantext with baseline commit bbe815f in branch main.

Found 17 performance improvements and 6 performance regressions! Performance is the same for 30 metrics, 2 unstable metrics.

scenario:benching serializing traces from their internal representation to msgpack

  • 🟩 execution_time [-1.081ms; -1.068ms] or [-7.133%; -7.043%]

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

  • 🟩 execution_time [-4.021µs; -3.745µs] or [-4.900%; -4.563%]
  • 🟩 throughput [+583118.326op/s; +625019.124op/s] or [+4.785%; +5.128%]

scenario:credit_card/is_card_number/ 378282246310005

  • 🟥 execution_time [+6.539µs; +6.649µs] or [+8.723%; +8.870%]
  • 🟥 throughput [-1086899.846op/s; -1069818.496op/s] or [-8.148%; -8.020%]

scenario:credit_card/is_card_number/378282246310005

  • 🟩 execution_time [-3.508µs; -3.412µs] or [-4.864%; -4.732%]
  • 🟩 throughput [+689355.670op/s; +708892.132op/s] or [+4.971%; +5.112%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟩 execution_time [-7.280µs; -7.257µs] or [-13.948%; -13.903%]
  • 🟩 throughput [+3093802.531op/s; +3105051.533op/s] or [+16.149%; +16.208%]

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

  • 🟩 execution_time [-2.894µs; -2.704µs] or [-4.499%; -4.202%]
  • 🟩 throughput [+683947.326op/s; +733881.158op/s] or [+4.400%; +4.721%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟩 execution_time [-4.006µs; -3.952µs] or [-6.954%; -6.861%]
  • 🟩 throughput [+1279737.094op/s; +1296503.205op/s] or [+7.371%; +7.468%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟩 execution_time [-4.604µs; -4.550µs] or [-8.398%; -8.300%]
  • 🟩 throughput [+1652293.996op/s; +1670278.492op/s] or [+9.059%; +9.157%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟩 execution_time [-7.274µs; -7.235µs] or [-13.939%; -13.865%]
  • 🟩 throughput [+3084864.917op/s; +3103951.515op/s] or [+16.098%; +16.197%]

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

  • 🟥 execution_time [+38.339µs; +38.530µs] or [+7.728%; +7.766%]
  • 🟥 throughput [-145298.330op/s; -144552.553op/s] or [-7.209%; -7.172%]

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

  • 🟥 execution_time [+24.661µs; +24.795µs] or [+14.520%; +14.599%]
  • 🟥 throughput [-750184.632op/s; -746335.372op/s] or [-12.741%; -12.676%]

scenario:normalization/normalize_service/normalize_service/[empty string]

  • 🟩 execution_time [-2.294µs; -2.266µs] or [-6.017%; -5.944%]
  • 🟩 throughput [+1658453.782op/s; +1679141.990op/s] or [+6.322%; +6.400%]

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 ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 91.465µs 91.752µs ± 0.178µs 91.728µs ± 0.058µs 91.790µs 91.925µs 92.518µs 93.552µs 1.99% 6.108 54.364 0.19% 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 [91.727µs; 91.776µs] or [-0.027%; +0.027%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.294µs 3.227µs ± 1.460µs 3.050µs ± 0.024µs 3.072µs 3.479µs 14.039µs 15.455µs 406.75% 7.539 57.296 45.14% 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.025µs; 3.429µs] or [-6.271%; +6.271%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.602µs 187.043µs ± 0.349µs 186.951µs ± 0.126µs 187.101µs 187.821µs 188.288µs 188.540µs 0.85% 2.202 5.263 0.19% 0.025µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5303916.399op/s 5346387.939op/s ± 9929.566op/s 5349007.709op/s ± 3616.518op/s 5352251.401op/s 5355616.805op/s 5357436.293op/s 5358986.444op/s 0.19% -2.189 5.202 0.19% 702.126op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.962µs 18.067µs ± 0.040µs 18.069µs ± 0.028µs 18.096µs 18.132µs 18.159µs 18.169µs 0.55% -0.010 -0.310 0.22% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55039260.568op/s 55348866.672op/s ± 123639.879op/s 55342620.821op/s ± 87285.853op/s 55434444.752op/s 55550644.968op/s 55612423.809op/s 55672931.353op/s 0.60% 0.021 -0.311 0.22% 8742.660op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.111µs 10.187µs ± 0.028µs 10.185µs ± 0.018µs 10.203µs 10.237µs 10.264µs 10.280µs 0.93% 0.380 0.459 0.28% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 97276694.715op/s 98168269.183op/s ± 273070.727op/s 98182580.926op/s ± 172321.676op/s 98348453.805op/s 98575836.806op/s 98708805.655op/s 98897369.255op/s 0.73% -0.361 0.434 0.28% 19309.016op/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.994µs; 187.091µs] or [-0.026%; +0.026%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5345011.796op/s; 5347764.081op/s] or [-0.026%; +0.026%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.062µs; 18.073µs] or [-0.031%; +0.031%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55331731.374op/s; 55366001.970op/s] or [-0.031%; +0.031%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.183µs; 10.191µs] or [-0.039%; +0.039%] None None None
normalization/normalize_name/normalize_name/good throughput [98130424.206op/s; 98206114.159op/s] or [-0.039%; +0.039%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 6.297ms 6.379ms ± 0.070ms 6.370ms ± 0.020ms 6.389ms 6.445ms 6.673ms 7.009ms 10.02% 5.535 40.901 1.10% 0.005ms 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 [6.370ms; 6.389ms] or [-0.153%; +0.153%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 34.463µs 35.153µs ± 1.214µs 34.601µs ± 0.049µs 34.658µs 37.731µs 37.773µs 39.171µs 13.21% 1.713 1.064 3.45% 0.086µ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.985µs; 35.322µs] or [-0.479%; +0.479%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.001µs 5.065µs ± 0.036µs 5.057µs ± 0.024µs 5.093µs 5.130µs 5.133µs 5.134µs 1.52% 0.285 -1.014 0.71% 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.060µs; 5.070µs] or [-0.099%; +0.099%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.627ms 10.661ms ± 0.016ms 10.659ms ± 0.010ms 10.669ms 10.689ms 10.705ms 10.741ms 0.77% 0.885 2.354 0.15% 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.658ms; 10.663ms] or [-0.021%; +0.021%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.894µs 3.912µs ± 0.006µs 3.911µs ± 0.001µs 3.913µs 3.916µs 3.918µs 3.979µs 1.72% 7.916 77.575 0.16% 0.000µs 1 200
credit_card/is_card_number/ throughput 251340161.277op/s 255617084.461op/s ± 400044.357op/s 255661486.596op/s ± 89663.390op/s 255747451.194op/s 255862193.504op/s 255900346.913op/s 256832797.428op/s 0.46% -7.836 76.516 0.16% 28287.408op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.380µs 78.180µs ± 0.412µs 78.116µs ± 0.308µs 78.478µs 78.877µs 79.159µs 79.322µs 1.54% 0.416 -0.527 0.53% 0.029µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12606877.761op/s 12791309.662op/s ± 67326.149op/s 12801406.946op/s ± 50315.601op/s 12842272.047op/s 12881965.695op/s 12913503.732op/s 12923302.522op/s 0.95% -0.396 -0.552 0.53% 4760.678op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 80.963µs 81.560µs ± 0.359µs 81.584µs ± 0.263µs 81.781µs 82.212µs 82.359µs 82.640µs 1.29% 0.394 -0.346 0.44% 0.025µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 12100653.829op/s 12261097.988op/s ± 53909.706op/s 12257246.738op/s ± 39631.703op/s 12299707.575op/s 12342944.563op/s 12348494.814op/s 12351322.214op/s 0.77% -0.375 -0.373 0.44% 3811.992op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.896µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.915µs 3.917µs 3.918µs 0.18% -0.644 6.090 0.06% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255262531.074op/s 255693601.760op/s ± 164151.766op/s 255713808.548op/s ± 103722.869op/s 255803562.075op/s 255899172.730op/s 255970311.838op/s 256700928.259op/s 0.39% 0.659 6.178 0.06% 11607.283op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 68.166µs 68.648µs ± 0.282µs 68.608µs ± 0.201µs 68.810µs 69.152µs 69.465µs 69.534µs 1.35% 0.748 0.292 0.41% 0.020µs 1 200
credit_card/is_card_number/378282246310005 throughput 14381540.092op/s 14567230.660op/s ± 59694.212op/s 14575508.097op/s ± 42719.116op/s 14617451.056op/s 14642974.293op/s 14663591.992op/s 14669978.733op/s 0.65% -0.727 0.244 0.41% 4221.018op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.752µs 44.929µs ± 0.078µs 44.935µs ± 0.051µs 44.981µs 45.049µs 45.111µs 45.164µs 0.51% -0.015 -0.141 0.17% 0.006µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 22141343.986op/s 22257197.367op/s ± 38830.537op/s 22254556.199op/s ± 25413.213op/s 22282312.858op/s 22321142.711op/s 22336290.975op/s 22345343.170op/s 0.41% 0.025 -0.151 0.17% 2745.734op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.691µs 5.700µs ± 0.013µs 5.698µs ± 0.002µs 5.700µs 5.709µs 5.774µs 5.800µs 1.78% 5.518 33.015 0.23% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 172428344.233op/s 175428540.419op/s ± 403488.251op/s 175505344.138op/s ± 73315.102op/s 175577636.042op/s 175652680.823op/s 175681466.170op/s 175722447.046op/s 0.12% -5.486 32.677 0.23% 28530.928op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.895µs 3.910µs ± 0.002µs 3.911µs ± 0.001µs 3.912µs 3.915µs 3.916µs 3.917µs 0.17% -0.807 6.733 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255293166.477op/s 255722940.375op/s ± 159953.739op/s 255718579.205op/s ± 93564.644op/s 255836066.493op/s 255923260.320op/s 256006221.972op/s 256725933.424op/s 0.39% 0.822 6.826 0.06% 11310.437op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 60.030µs 61.535µs ± 0.677µs 61.403µs ± 0.418µs 61.928µs 62.852µs 63.157µs 63.907µs 4.08% 0.601 0.401 1.10% 0.048µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15647838.151op/s 16252783.545op/s ± 177792.547op/s 16285734.402op/s ± 110876.154op/s 16364427.427op/s 16525226.972op/s 16587945.585op/s 16658344.266op/s 2.29% -0.534 0.301 1.09% 12571.832op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.356µs 53.622µs ± 0.094µs 53.620µs ± 0.061µs 53.688µs 53.754µs 53.840µs 53.875µs 0.48% -0.030 -0.095 0.18% 0.007µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18561405.696op/s 18649230.152op/s ± 32838.200op/s 18649625.500op/s ± 21223.762op/s 18669676.711op/s 18705681.021op/s 18719642.713op/s 18741867.458op/s 0.49% 0.040 -0.096 0.18% 2322.011op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.891µs 3.911µs ± 0.002µs 3.911µs ± 0.001µs 3.913µs 3.915µs 3.917µs 3.917µs 0.15% -2.612 21.616 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255284493.894op/s 255656595.976op/s ± 161025.013op/s 255658034.375op/s ± 82301.291op/s 255735277.570op/s 255861806.761op/s 255945846.057op/s 256988638.106op/s 0.52% 2.644 21.931 0.06% 11386.188op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.138µs 50.249µs ± 0.050µs 50.241µs ± 0.035µs 50.283µs 50.342µs 50.398µs 50.403µs 0.32% 0.594 0.365 0.10% 0.004µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19839938.554op/s 19900976.717op/s ± 19953.726op/s 19904223.676op/s ± 14030.536op/s 19914991.508op/s 19928058.016op/s 19939041.481op/s 19945007.905op/s 0.20% -0.588 0.354 0.10% 1410.941op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.550µs 44.929µs ± 0.137µs 44.956µs ± 0.091µs 45.033µs 45.116µs 45.140µs 45.215µs 0.58% -0.629 -0.064 0.30% 0.010µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 22116407.280op/s 22257753.174op/s ± 68027.308op/s 22243945.261op/s ± 45194.392op/s 22297288.111op/s 22384282.873op/s 22445013.687op/s 22446939.913op/s 0.91% 0.643 -0.040 0.30% 4810.257op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.691µs 5.698µs ± 0.003µs 5.697µs ± 0.002µs 5.700µs 5.703µs 5.707µs 5.711µs 0.25% 0.893 1.574 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 175086672.891op/s 175511662.321op/s ± 104966.537op/s 175524784.102op/s ± 66988.939op/s 175588175.993op/s 175661800.328op/s 175679193.656op/s 175710782.655op/s 0.11% -0.888 1.557 0.06% 7422.255op/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.913µs] or [-0.022%; +0.022%] None None None
credit_card/is_card_number/ throughput [255561642.161op/s; 255672526.762op/s] or [-0.022%; +0.022%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [78.123µs; 78.237µs] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12781978.905op/s; 12800640.418op/s] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [81.511µs; 81.610µs] or [-0.061%; +0.061%] None None None
credit_card/is_card_number/ 378282246310005 throughput [12253626.621op/s; 12268569.355op/s] or [-0.061%; +0.061%] None None None
credit_card/is_card_number/37828224631 execution_time [3.911µs; 3.911µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631 throughput [255670851.904op/s; 255716351.616op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/378282246310005 execution_time [68.609µs; 68.687µs] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/378282246310005 throughput [14558957.616op/s; 14575503.703op/s] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [44.919µs; 44.940µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22251815.828op/s; 22262578.906op/s] or [-0.024%; +0.024%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.699µs; 5.702µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number/x371413321323331 throughput [175372620.828op/s; 175484460.010op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.910µs; 3.911µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ throughput [255700772.325op/s; 255745108.424op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [61.441µs; 61.629µs] or [-0.153%; +0.153%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [16228143.208op/s; 16277423.883op/s] or [-0.152%; +0.152%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.609µs; 53.635µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18644679.093op/s; 18653781.210op/s] or [-0.024%; +0.024%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255634279.458op/s; 255678912.494op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.242µs; 50.256µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19898211.322op/s; 19903742.111op/s] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [44.910µs; 44.948µs] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22248325.244op/s; 22267181.105op/s] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.697µs; 5.698µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [175497114.968op/s; 175526209.673op/s] or [-0.008%; +0.008%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 60.729ms 61.276ms ± 2.134ms 60.960ms ± 0.080ms 61.101ms 61.385ms 72.432ms 81.281ms 33.34% 8.357 70.747 3.47% 0.151ms 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.980ms; 61.572ms] or [-0.483%; +0.483%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.021ms 14.086ms ± 0.037ms 14.079ms ± 0.018ms 14.100ms 14.153ms 14.229ms 14.280ms 1.43% 1.847 5.799 0.26% 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.081ms; 14.091ms] or [-0.037%; +0.037%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.329µs 2.391µs ± 0.019µs 2.387µs ± 0.007µs 2.399µs 2.439µs 2.451µs 2.454µs 2.79% 1.006 3.014 0.81% 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.388µs; 2.394µs] or [-0.113%; +0.113%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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.549µs 25.465µs ± 9.718µs 17.939µs ± 0.198µs 33.264µs 42.378µs 43.455µs 71.889µs 300.74% 1.154 1.754 38.07% 0.687µ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.118µs; 26.812µs] or [-5.289%; +5.289%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 237.982ns 249.004ns ± 14.047ns 242.356ns ± 3.270ns 249.461ns 277.998ns 285.909ns 289.349ns 19.39% 1.370 0.362 5.63% 0.993ns 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 [247.057ns; 250.951ns] or [-0.782%; +0.782%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 533.650µs 534.555µs ± 0.340µs 534.548µs ± 0.222µs 534.765µs 535.116µs 535.306µs 535.482µs 0.17% 0.093 -0.013 0.06% 0.024µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1867477.635op/s 1870716.987op/s ± 1189.413op/s 1870739.700op/s ± 776.398op/s 1871547.648op/s 1872620.725op/s 1873251.022op/s 1873887.173op/s 0.17% -0.089 -0.014 0.06% 84.104op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.731µs 382.580µs ± 0.378µs 382.560µs ± 0.218µs 382.790µs 383.140µs 383.461µs 385.314µs 0.72% 1.927 12.506 0.10% 0.027µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2595285.337op/s 2613832.839op/s ± 2581.070op/s 2613969.199op/s ± 1488.811op/s 2615390.682op/s 2617497.723op/s 2618763.855op/s 2619646.070op/s 0.22% -1.895 12.240 0.10% 182.509op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 194.048µs 194.572µs ± 0.414µs 194.501µs ± 0.152µs 194.660µs 195.193µs 195.446µs 198.791µs 2.21% 5.788 53.040 0.21% 0.029µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5030410.153op/s 5139512.936op/s ± 10803.213op/s 5141371.132op/s ± 4023.496op/s 5144998.760op/s 5149222.259op/s 5152368.548op/s 5153366.213op/s 0.23% -5.653 51.121 0.21% 763.903op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 35.656µs 35.838µs ± 0.077µs 35.833µs ± 0.048µs 35.886µs 35.975µs 36.029µs 36.039µs 0.58% 0.168 -0.034 0.21% 0.005µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 27747478.807op/s 27903472.567op/s ± 60002.778op/s 27907196.063op/s ± 37148.451op/s 27938790.449op/s 27998995.101op/s 28039428.760op/s 28045879.190op/s 0.50% -0.155 -0.039 0.21% 4242.837op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 44.898µs 45.061µs ± 0.100µs 45.057µs ± 0.088µs 45.151µs 45.209µs 45.284µs 45.311µs 0.56% 0.115 -0.893 0.22% 0.007µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 22069755.631op/s 22192372.313op/s ± 49402.904op/s 22194325.878op/s ± 43217.487op/s 22232033.141op/s 22271374.872op/s 22272520.999op/s 22272729.073op/s 0.35% -0.108 -0.899 0.22% 3493.313op/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 [534.508µs; 534.602µs] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1870552.146op/s; 1870881.829op/s] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [382.528µs; 382.633µs] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2613475.127op/s; 2614190.550op/s] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [194.514µs; 194.629µs] or [-0.029%; +0.029%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5138015.715op/s; 5141010.157op/s] or [-0.029%; +0.029%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [35.827µs; 35.849µs] or [-0.030%; +0.030%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27895156.760op/s; 27911788.375op/s] or [-0.030%; +0.030%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.047µs; 45.075µs] or [-0.031%; +0.031%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [22185525.545op/s; 22199219.080op/s] or [-0.031%; +0.031%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ddd1b20 1760614809 paullgdc/trace-utils/remove_clone_on_spantext
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 161.856µs 163.009µs ± 0.378µs 162.957µs ± 0.158µs 163.132µs 163.480µs 164.418µs 166.125µs 1.94% 3.544 24.995 0.23% 0.027µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [162.956µs; 163.061µs] or [-0.032%; +0.032%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

Codecov Report

❌ Patch coverage is 96.66667% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.77%. Comparing base (5c16bbb) to head (ddd1b20).
⚠️ Report is 10 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1266      +/-   ##
==========================================
- Coverage   71.83%   71.77%   -0.06%     
==========================================
  Files         356      356              
  Lines       56677    56917     +240     
==========================================
+ Hits        40714    40854     +140     
- Misses      15963    16063     +100     
Components Coverage Δ
datadog-crashtracker 48.95% <ø> (-0.26%) ⬇️
datadog-crashtracker-ffi 5.86% <ø> (-0.07%) ⬇️
datadog-alloc 98.73% <ø> (ø)
data-pipeline 88.13% <ø> (-0.02%) ⬇️
data-pipeline-ffi 88.19% <ø> (ø)
ddcommon 84.32% <80.00%> (-0.22%) ⬇️
ddcommon-ffi 73.90% <80.00%> (+0.05%) ⬆️
ddtelemetry 59.98% <ø> (+0.49%) ⬆️
ddtelemetry-ffi 21.24% <ø> (ø)
dogstatsd-client 83.26% <ø> (ø)
datadog-ipc 82.39% <ø> (ø)
datadog-profiling 76.90% <ø> (ø)
datadog-profiling-ffi 62.12% <ø> (ø)
datadog-sidecar 36.89% <0.00%> (-0.19%) ⬇️
datdog-sidecar-ffi 10.61% <0.00%> (-0.76%) ⬇️
spawn-worker 55.35% <ø> (ø)
tinybytes 92.22% <ø> (ø)
datadog-trace-normalization 98.24% <ø> (ø)
datadog-trace-obfuscation 94.17% <ø> (ø)
datadog-trace-protobuf 59.65% <ø> (ø)
datadog-trace-utils 89.85% <100.00%> (-0.14%) ⬇️
datadog-tracer-flare 60.93% <ø> (+6.30%) ⬆️
datadog-log 76.31% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dd-octo-sts
Copy link

dd-octo-sts bot commented Oct 16, 2025

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 71.32 MB 71.36 MB +.04% (+36.14 KB) 🔍
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 7.25 MB 7.25 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 83.64 MB 83.70 MB +.06% (+59.68 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.27 MB 9.27 MB +.03% (+3.12 KB) 🔍
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 18.50 MB 18.48 MB --.09% (-18.00 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 65.77 KB 65.77 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 125.66 MB 125.54 MB --.09% (-120.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 656.83 MB 656.56 MB --.04% (-276.69 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 5.92 MB 5.92 MB +.04% (+3.00 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 65.77 KB 65.77 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 17.44 MB 17.44 MB +.04% (+8.00 KB) 🔍
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 32.39 MB 32.40 MB +0% (+1.04 KB) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 15.77 MB 15.77 MB --.02% (-4.50 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 66.79 KB 66.79 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 127.98 MB 127.93 MB --.03% (-48.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 645.77 MB 645.99 MB +.03% (+224.47 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 4.53 MB 4.53 MB +.14% (+6.50 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 66.79 KB 66.79 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 18.57 MB 18.58 MB +.04% (+8.00 KB) 🔍
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 30.42 MB 30.45 MB +.10% (+32.90 KB) 🔍
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 63.92 MB 63.94 MB +.02% (+17.02 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.55 MB 8.56 MB +.04% (+4.00 KB) 🔍
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 78.36 MB 78.41 MB +.06% (+55.10 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.91 MB 9.92 MB +.05% (+5.89 KB) 🔍

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants