Skip to content

fix(trace-utils): v05 events and span links serialization #980

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

paullegranddc
Copy link
Contributor

What does this PR do?

V05 format specifies fallback options for serializing events and span links inside of the meta field.

span_links fallback format spec

event fallback format spec

This PR should be fixing it

Motivation

What inspired you to submit this pull request?

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Describe here in detail how the change can be validated.

@paullegranddc paullegranddc requested review from a team as code owners March 27, 2025 12:54
@pr-commenter
Copy link

pr-commenter bot commented Mar 27, 2025

Benchmarks

Comparison

Benchmark execution time: 2025-06-30 08:25:11

Comparing candidate commit 798fba6 in PR branch paullgdc/trace-util/v05_event_span_links_ser with baseline commit 5eb5267 in branch main.

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

scenario:benching deserializing traces from msgpack to their internal representation

  • 🟩 execution_time [-18.574ms; -18.479ms] or [-25.753%; -25.621%]

scenario:credit_card/is_card_number/ 378282246310005

  • 🟩 execution_time [-3.559µs; -3.404µs] or [-4.701%; -4.497%]
  • 🟩 throughput [+622823.332op/s; +651926.873op/s] or [+4.715%; +4.935%]

scenario:credit_card/is_card_number/378282246310005

  • 🟩 execution_time [-3.550µs; -3.383µs] or [-4.873%; -4.644%]
  • 🟩 throughput [+669630.166op/s; +703949.549op/s] or [+4.878%; +5.128%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟩 execution_time [-7.157µs; -7.112µs] or [-13.537%; -13.454%]
  • 🟩 throughput [+2941418.196op/s; +2960616.496op/s] or [+15.550%; +15.652%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟩 execution_time [-4.111µs; -4.069µs] or [-7.050%; -6.978%]
  • 🟩 throughput [+1286810.502op/s; +1300415.302op/s] or [+7.503%; +7.583%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟩 execution_time [-5.039µs; -4.986µs] or [-9.083%; -8.987%]
  • 🟩 throughput [+1780865.110op/s; +1799387.550op/s] or [+9.880%; +9.983%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟩 execution_time [-7.137µs; -7.099µs] or [-13.505%; -13.432%]
  • 🟩 throughput [+2936749.647op/s; +2954005.101op/s] or [+15.520%; +15.611%]

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 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.806ns 254.841ns ± 14.261ns 248.438ns ± 3.933ns 260.692ns 286.666ns 288.554ns 291.537ns 17.35% 1.298 0.206 5.58% 1.008ns 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 [252.865ns; 256.818ns] or [-0.776%; +0.776%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.811µs 26.291µs ± 10.494µs 18.094µs ± 0.224µs 35.571µs 45.191µs 53.913µs 71.270µs 293.89% 0.924 0.348 39.81% 0.742µ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.837µs; 27.746µs] or [-5.532%; +5.532%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.215µs 3.195µs ± 1.433µs 3.023µs ± 0.022µs 3.042µs 3.384µs 13.864µs 15.117µs 400.13% 7.513 56.986 44.74% 0.101µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.997µs; 3.394µs] or [-6.216%; +6.216%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.364µs 205.069µs ± 0.385µs 205.010µs ± 0.239µs 205.306µs 205.743µs 206.206µs 206.329µs 0.64% 0.604 0.349 0.19% 0.027µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4846630.348op/s 4876434.568op/s ± 9145.735op/s 4877817.591op/s ± 5694.479op/s 4882477.931op/s 4890163.784op/s 4892508.235op/s 4893234.904op/s 0.32% -0.592 0.327 0.19% 646.701op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.438µs 18.546µs ± 0.104µs 18.532µs ± 0.038µs 18.570µs 18.670µs 18.763µs 19.724µs 6.43% 7.596 81.683 0.56% 0.007µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 50700896.933op/s 53922090.724op/s ± 289509.501op/s 53962123.163op/s ± 110971.851op/s 54073145.620op/s 54155702.050op/s 54176039.040op/s 54234895.007op/s 0.51% -7.172 75.066 0.54% 20471.413op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.605µs 10.716µs ± 0.058µs 10.712µs ± 0.041µs 10.752µs 10.826µs 10.856µs 10.888µs 1.64% 0.532 -0.145 0.54% 0.004µs 1 200
normalization/normalize_name/normalize_name/good throughput 91847451.899op/s 93317379.379op/s ± 500456.578op/s 93349823.002op/s ± 357414.338op/s 93715415.988op/s 94032594.822op/s 94199786.229op/s 94292021.671op/s 1.01% -0.507 -0.185 0.53% 35387.624op/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.015µs; 205.122µ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 [4875167.057op/s; 4877702.079op/s] or [-0.026%; +0.026%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.531µs; 18.560µs] or [-0.077%; +0.077%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [53881967.492op/s; 53962213.957op/s] or [-0.074%; +0.074%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.708µs; 10.724µs] or [-0.075%; +0.075%] None None None
normalization/normalize_name/normalize_name/good throughput [93248020.910op/s; 93386737.848op/s] or [-0.074%; +0.074%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.175ms 8.193ms ± 0.014ms 8.190ms ± 0.006ms 8.197ms 8.215ms 8.247ms 8.265ms 0.92% 2.412 7.842 0.17% 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.191ms; 8.195ms] or [-0.023%; +0.023%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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 53.421ms 53.598ms ± 0.115ms 53.587ms ± 0.052ms 53.632ms 53.740ms 54.008ms 54.457ms 1.62% 2.949 16.283 0.21% 0.008ms 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 [53.582ms; 53.614ms] or [-0.030%; +0.030%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.999µs 5.071µs ± 0.044µs 5.050µs ± 0.019µs 5.124µs 5.138µs 5.149µs 5.152µs 2.02% 0.531 -1.338 0.86% 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.065µs; 5.077µs] or [-0.120%; +0.120%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.100µs 86.455µs ± 0.188µs 86.441µs ± 0.049µs 86.490µs 86.597µs 86.777µs 88.692µs 2.60% 8.596 99.130 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 [86.429µs; 86.481µs] or [-0.030%; +0.030%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.439µs 147.532µs ± 0.958µs 147.395µs ± 0.162µs 147.606µs 148.044µs 148.762µs 160.042µs 8.58% 11.326 144.170 0.65% 0.068µ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.399µs; 147.665µs] or [-0.090%; +0.090%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.745µs 34.135µs ± 0.687µs 33.830µs ± 0.037µs 33.883µs 35.553µs 35.606µs 37.391µs 10.53% 1.922 2.598 2.01% 0.049µ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.039µs; 34.230µs] or [-0.279%; +0.279%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.850µs 534.828µs ± 1.517µs 534.628µs ± 0.288µs 534.918µs 535.389µs 544.940µs 547.521µs 2.41% 7.168 54.112 0.28% 0.107µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1826414.356op/s 1869774.665op/s ± 5199.661op/s 1870458.328op/s ± 1007.706op/s 1871445.406op/s 1872590.135op/s 1872861.001op/s 1873183.907op/s 0.15% -7.127 53.652 0.28% 367.672op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.143µs 381.784µs ± 0.263µs 381.764µs ± 0.165µs 381.944µs 382.258µs 382.478µs 382.531µs 0.20% 0.393 0.226 0.07% 0.019µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2614164.544op/s 2619280.526op/s ± 1800.753op/s 2619418.432op/s ± 1135.106op/s 2620487.300op/s 2621838.697op/s 2623444.134op/s 2623685.377op/s 0.16% -0.388 0.222 0.07% 127.332op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.878µs 190.199µs ± 0.165µs 190.182µs ± 0.122µs 190.310µs 190.461µs 190.636µs 190.727µs 0.29% 0.483 0.093 0.09% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5243104.612op/s 5257641.654op/s ± 4559.063op/s 5258114.079op/s ± 3389.034op/s 5261230.197op/s 5264338.074op/s 5265953.341op/s 5266543.123op/s 0.16% -0.478 0.084 0.09% 322.374op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 37.224µs 37.561µs ± 0.183µs 37.505µs ± 0.088µs 37.634µs 37.922µs 38.013µs 38.067µs 1.50% 0.891 -0.081 0.49% 0.013µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26269582.497op/s 26623934.560op/s ± 128945.866op/s 26663437.727op/s ± 62724.434op/s 26715293.771op/s 26775756.698op/s 26831573.802op/s 26864572.194op/s 0.75% -0.874 -0.107 0.48% 9117.850op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.718µs 45.871µs ± 0.077µs 45.875µs ± 0.055µs 45.924µs 45.984µs 46.019µs 46.270µs 0.86% 0.569 2.285 0.17% 0.005µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21612322.482op/s 21800290.726op/s ± 36639.933op/s 21798552.554op/s ± 26037.596op/s 21828470.305op/s 21856854.144op/s 21872064.777op/s 21873355.701op/s 0.34% -0.549 2.187 0.17% 2590.834op/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.618µs; 535.038µs] or [-0.039%; +0.039%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1869054.042op/s; 1870495.287op/s] or [-0.039%; +0.039%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [381.748µs; 381.821µs] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2619030.959op/s; 2619530.094op/s] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.177µs; 190.222µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5257009.812op/s; 5258273.497op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.536µs; 37.586µs] or [-0.067%; +0.067%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26606063.904op/s; 26641805.217op/s] or [-0.067%; +0.067%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.860µs; 45.882µs] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21795212.783op/s; 21805368.668op/s] or [-0.023%; +0.023%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.327µs 2.366µs ± 0.014µs 2.364µs ± 0.006µs 2.372µs 2.392µs 2.395µs 2.399µs 1.47% -0.073 0.639 0.60% 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.364µs; 2.368µs] or [-0.084%; +0.084%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 798fba6 1743086869 paullgdc/trace-util/v05_event_span_links_ser
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.891µs 3.912µs ± 0.003µs 3.911µs ± 0.001µs 3.913µs 3.917µs 3.921µs 3.922µs 0.27% -0.407 9.950 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254990310.967op/s 255650915.219op/s ± 201699.156op/s 255674777.684op/s ± 93226.953op/s 255756822.772op/s 255854379.982op/s 255950732.942op/s 256987972.320op/s 0.51% 0.435 10.107 0.08% 14262.284op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 78.351µs 81.441µs ± 1.279µs 81.424µs ± 0.937µs 82.304µs 83.653µs 84.166µs 84.727µs 4.06% 0.083 -0.444 1.57% 0.090µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 11802595.124op/s 12281854.587op/s ± 192739.187op/s 12281321.374op/s ± 141293.847op/s 12429339.163op/s 12578302.990op/s 12697560.075op/s 12763132.826op/s 3.92% -0.010 -0.454 1.57% 13628.719op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 71.486µs 72.221µs ± 0.515µs 72.150µs ± 0.330µs 72.495µs 73.133µs 73.569µs 74.006µs 2.57% 0.740 0.205 0.71% 0.036µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13512487.531op/s 13847126.294op/s ± 98197.213op/s 13860049.102op/s ± 63614.863op/s 13923281.467op/s 13973123.873op/s 13985805.323op/s 13988814.986op/s 0.93% -0.705 0.119 0.71% 6943.591op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.891µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.913µs 3.916µs 3.920µs 3.921µs 0.24% -1.329 13.169 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255029527.373op/s 255643583.395op/s ± 185834.885op/s 255648384.595op/s ± 100307.926op/s 255743917.627op/s 255871922.905op/s 255940100.745op/s 256990865.115op/s 0.53% 1.358 13.378 0.07% 13140.511op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 68.338µs 69.383µs ± 0.586µs 69.339µs ± 0.397µs 69.746µs 70.499µs 71.146µs 71.227µs 2.72% 0.740 0.628 0.84% 0.041µs 1 200
credit_card/is_card_number/378282246310005 throughput 14039542.323op/s 14413678.052op/s ± 121024.017op/s 14421816.536op/s ± 82517.859op/s 14502750.448op/s 14589281.596op/s 14624351.299op/s 14633048.063op/s 1.46% -0.688 0.511 0.84% 8557.690op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.395µs 45.732µs ± 0.124µs 45.742µs ± 0.088µs 45.822µs 45.917µs 45.941µs 45.985µs 0.53% -0.386 -0.330 0.27% 0.009µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21746217.275op/s 21866473.897op/s ± 59574.395op/s 21861583.750op/s ± 41874.824op/s 21904130.572op/s 21975467.583op/s 22010421.287op/s 22028848.940op/s 0.77% 0.398 -0.314 0.27% 4212.546op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.427µs 6.435µs ± 0.006µs 6.435µs ± 0.003µs 6.438µs 6.443µs 6.447µs 6.489µs 0.85% 3.717 27.885 0.10% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 154102475.470op/s 155390805.507op/s ± 149318.351op/s 155405016.454op/s ± 79322.944op/s 155489753.226op/s 155564837.093op/s 155578872.732op/s 155585618.766op/s 0.12% -3.671 27.363 0.10% 10558.402op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.891µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.919µs 3.920µs 0.22% -0.894 6.977 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255089265.281op/s 255638576.938op/s ± 209033.802op/s 255644895.744op/s ± 140152.468op/s 255801233.340op/s 255887472.118op/s 255919405.125op/s 256976427.614op/s 0.52% 0.915 7.113 0.08% 14780.922op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 61.431µs 63.156µs ± 0.601µs 63.250µs ± 0.384µs 63.534µs 64.048µs 64.278µs 64.483µs 1.95% -0.383 -0.327 0.95% 0.042µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15507848.386op/s 15835259.925op/s ± 151259.920op/s 15810188.643op/s ± 95868.903op/s 15933138.293op/s 16094263.745op/s 16191930.118op/s 16278399.536op/s 2.96% 0.427 -0.285 0.95% 10695.692op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.963µs 54.220µs ± 0.119µs 54.217µs ± 0.077µs 54.296µs 54.394µs 54.472µs 54.928µs 1.31% 1.167 5.824 0.22% 0.008µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18205548.914op/s 18443300.086op/s ± 40515.829op/s 18444323.046op/s ± 26342.915op/s 18467339.724op/s 18506808.942op/s 18529649.757op/s 18531323.496op/s 0.47% -1.125 5.574 0.22% 2864.902op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.894µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.913µs 3.916µs 3.918µs 3.920µs 0.21% -1.065 8.719 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255107769.559op/s 255639568.370op/s ± 175564.153op/s 255647102.982op/s ± 112762.265op/s 255752242.930op/s 255859770.589op/s 255905157.948op/s 256812695.228op/s 0.46% 1.085 8.857 0.07% 12414.260op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.241µs 50.468µs ± 0.108µs 50.460µs ± 0.065µs 50.523µs 50.635µs 50.891µs 51.058µs 1.18% 1.658 6.471 0.21% 0.008µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19585663.806op/s 19814622.451op/s ± 42103.972op/s 19817631.978op/s ± 25573.577op/s 19843449.148op/s 19869666.074op/s 19889726.941op/s 19904132.098op/s 0.44% -1.622 6.272 0.21% 2977.200op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.396µs 45.730µs ± 0.118µs 45.736µs ± 0.077µs 45.808µs 45.899µs 45.972µs 46.158µs 0.92% 0.083 0.424 0.26% 0.008µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21664757.563op/s 21867606.642op/s ± 56443.729op/s 21864721.272op/s ± 36615.413op/s 21902863.260op/s 21954327.851op/s 21989760.339op/s 22028281.698op/s 0.75% -0.064 0.398 0.26% 3991.174op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.426µs 6.434µs ± 0.004µs 6.434µs ± 0.003µs 6.436µs 6.441µs 6.445µs 6.451µs 0.26% 0.801 1.070 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 155023828.807op/s 155425137.218op/s ± 100197.357op/s 155433583.234op/s ± 65463.829op/s 155499063.119op/s 155566652.532op/s 155583627.289op/s 155611153.047op/s 0.11% -0.796 1.054 0.06% 7085.023op/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.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255622961.656op/s; 255678868.782op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [81.264µs; 81.618µs] or [-0.218%; +0.218%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12255142.789op/s; 12308566.385op/s] or [-0.217%; +0.217%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.149µs; 72.292µs] or [-0.099%; +0.099%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13833517.105op/s; 13860735.484op/s] or [-0.098%; +0.098%] None None None
credit_card/is_card_number/37828224631 execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255617828.467op/s; 255669338.323op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.302µs; 69.465µs] or [-0.117%; +0.117%] None None None
credit_card/is_card_number/378282246310005 throughput [14396905.288op/s; 14430450.817op/s] or [-0.116%; +0.116%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.715µs; 45.750µs] or [-0.038%; +0.038%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21858217.459op/s; 21874730.335op/s] or [-0.038%; +0.038%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.435µs; 6.436µs] or [-0.013%; +0.013%] None None None
credit_card/is_card_number/x371413321323331 throughput [155370111.420op/s; 155411499.595op/s] or [-0.013%; +0.013%] 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 [255609606.864op/s; 255667547.013op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [63.073µs; 63.239µs] or [-0.132%; +0.132%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15814296.755op/s; 15856223.096op/s] or [-0.132%; +0.132%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [54.204µs; 54.237µs] or [-0.031%; +0.031%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18437684.982op/s; 18448915.190op/s] or [-0.030%; +0.030%] 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 [255615236.867op/s; 255663899.873op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.453µs; 50.483µs] or [-0.030%; +0.030%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19808787.245op/s; 19820457.656op/s] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.714µs; 45.746µs] or [-0.036%; +0.036%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21859784.084op/s; 21875429.200op/s] or [-0.036%; +0.036%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.433µs; 6.435µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155411250.828op/s; 155439023.608op/s] or [-0.009%; +0.009%] None None None

Baseline

Omitted due to size.

@paullegranddc paullegranddc changed the title fix(trace-utils: v05 events and span links serialization fix(trace-utils): v05 events and span links serialization Mar 27, 2025
Copy link
Contributor

@hoolioh hoolioh left a comment

Choose a reason for hiding this comment

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

Couple of comments. Additionally it'd be great to add spanlinks and spanevents support to v05 snapshots in data-pipeline/tests/ to have them covered.

Comment on lines +149 to +150
if !span.span_links.is_empty() {
let serialized_span_links = serde_json::to_string(&span.span_links)?;
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should check here for the 25kb limit on the tag value, right?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, anything beyond 25KB limits is dropped. the implementation should try to stuff as many as links possible under the limit and drop the others.

There used to be dropped_attributes_count to count the dropped attributes in case of oversized span links which i didn't see our implementation.

if !span.span_links.is_empty() {
let serialized_span_links = serde_json::to_string(&span.span_links)?;
meta.insert(
dict.get_or_insert(&tinybytes::BytesString::from("span_links"))?,
Copy link
Contributor

Choose a reason for hiding this comment

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

In the RFC there is some discussion about "span_links" or "_dd.span_links". Did they finally choose the former?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No, it's a mistake the key should definitely be "_dd.span_links" from other implementations

Copy link
Contributor

@ganeshnj ganeshnj left a comment

Choose a reason for hiding this comment

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

a few minor comments around tests and one major around tag size limit

overall looks good.

Comment on lines +35 to +45
///This structure is a wrapper around a slice of span events
///
/// It is meant to overrdide the default serialization, so we can serialize attributes
/// differently from the original impl.
/// Span events are serialized to JSON and added to "meta" when serializing to v0.5
///
/// The main difference with messagepacck serialization is that attributes with any types
/// are supposed to be mapped to their natural JSON representation.
///
/// Sadly, I haven't found a good way of overriding the default Serialize behavior, other
/// than just doing it for the whole data structures that embed it.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
///This structure is a wrapper around a slice of span events
///
/// It is meant to overrdide the default serialization, so we can serialize attributes
/// differently from the original impl.
/// Span events are serialized to JSON and added to "meta" when serializing to v0.5
///
/// The main difference with messagepacck serialization is that attributes with any types
/// are supposed to be mapped to their natural JSON representation.
///
/// Sadly, I haven't found a good way of overriding the default Serialize behavior, other
/// than just doing it for the whole data structures that embed it.
/// This structure is a wrapper around a slice of span events
///
/// It is meant to override the default serialization, so we can serialize attributes
/// differently from the original impl.
/// Span events are serialized to JSON and added to "meta" when serializing to v0.5
///
/// The main difference with messagepack serialization is that attributes with any types
/// are supposed to be mapped to their natural JSON representation.

you can skip the justification and personalization.

@@ -82,8 +209,47 @@ mod tests {
)]),
metrics: HashMap::from([(BytesString::from("metrics_field"), 1.1)]),
meta_struct: HashMap::new(),
span_links: vec![],
span_events: vec![],
span_links: vec![SpanLinkBytes {
Copy link
Contributor

Choose a reason for hiding this comment

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

/suggestion

  • would be nice to have test case for multiple span links
  • a complex attributes (remember we do some flattening for array and maps), I'm not sure at this point we have them already or we have to do ourselves
    eg
{"key": [[1,2], ["3", "4"]]} to {"key.0.0": "1", "key.0.1": 2, "key.1.0": 3, "key.1.1":4}

Comment on lines +149 to +150
if !span.span_links.is_empty() {
let serialized_span_links = serde_json::to_string(&span.span_links)?;
Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, anything beyond 25KB limits is dropped. the implementation should try to stuff as many as links possible under the limit and drop the others.

There used to be dropped_attributes_count to count the dropped attributes in case of oversized span links which i didn't see our implementation.

@danielsn danielsn requested a review from a team as a code owner June 24, 2025 21:31
@dd-devflow dd-devflow bot closed this Jun 27, 2025
@dd-devflow dd-devflow bot deleted the paullgdc/trace-util/v05_event_span_links_ser branch June 27, 2025 00:00
@ekump ekump restored the paullgdc/trace-util/v05_event_span_links_ser branch June 27, 2025 13:37
@ekump ekump reopened this Jun 27, 2025
@dd-devflow dd-devflow bot closed this Jun 28, 2025
@dd-devflow dd-devflow bot deleted the paullgdc/trace-util/v05_event_span_links_ser branch June 28, 2025 00:00
@paullegranddc paullegranddc restored the paullgdc/trace-util/v05_event_span_links_ser branch June 30, 2025 08:13
@paullegranddc paullegranddc reopened this Jun 30, 2025
@dd-devflow dd-devflow bot closed this Jul 1, 2025
@dd-devflow dd-devflow bot deleted the paullgdc/trace-util/v05_event_span_links_ser branch July 1, 2025 00:00
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.

4 participants