Skip to content

Conversation

@dd-oleksii
Copy link
Member

What does this PR do?

Follow-up to #1282 to demo simplified error handling.

@pr-commenter
Copy link

pr-commenter bot commented Oct 28, 2025

Benchmarks

Comparison

Benchmark execution time: 2025-10-28 20:04:57

Comparing candidate commit 6e39f29 in PR branch ffe-simplify-error-handling with baseline commit 10298cb in branch sameerank/FFL-1284-Create-datadog-ffe-ffi-crate.

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

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 6e39f29 1761681103 ffe-simplify-error-handling
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 163.072µs 163.998µs ± 0.389µs 163.958µs ± 0.141µs 164.092µs 164.531µs 165.119µs 167.650µs 2.25% 4.806 39.478 0.24% 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 [163.944µs; 164.052µs] or [-0.033%; +0.033%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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 185.638µs 186.057µs ± 0.226µs 186.038µs ± 0.144µs 186.180µs 186.435µs 186.666µs 187.087µs 0.56% 1.115 2.452 0.12% 0.016µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5345112.536op/s 5374718.918op/s ± 6515.553op/s 5375259.281op/s ± 4145.533op/s 5379394.399op/s 5383023.738op/s 5385394.729op/s 5386834.657op/s 0.22% -1.103 2.403 0.12% 460.719op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.813µs 17.882µs ± 0.037µs 17.877µs ± 0.022µs 17.901µs 17.942µs 17.957µs 18.149µs 1.52% 2.090 11.912 0.21% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55098587.115op/s 55921209.744op/s ± 115835.580op/s 55936692.842op/s ± 68525.534op/s 56001146.376op/s 56062925.031op/s 56115501.021op/s 56138722.085op/s 0.36% -2.032 11.389 0.21% 8190.812op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.543µs 10.592µs ± 0.023µs 10.587µs ± 0.012µs 10.605µs 10.626µs 10.681µs 10.691µs 0.98% 0.987 3.239 0.21% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 93536221.902op/s 94411305.335op/s ± 201833.952op/s 94451037.336op/s ± 108100.129op/s 94530853.046op/s 94755073.402op/s 94825439.721op/s 94850072.215op/s 0.42% -0.960 3.142 0.21% 14271.816op/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.025µs; 186.088µs] or [-0.017%; +0.017%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5373815.925op/s; 5375621.911op/s] or [-0.017%; +0.017%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.877µs; 17.888µs] or [-0.029%; +0.029%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55905156.047op/s; 55937263.442op/s] or [-0.029%; +0.029%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.589µs; 10.595µs] or [-0.030%; +0.030%] None None None
normalization/normalize_name/normalize_name/good throughput [94383333.091op/s; 94439277.580op/s] or [-0.030%; +0.030%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.410µs 2.462µs ± 0.043µs 2.445µs ± 0.010µs 2.489µs 2.530µs 2.635µs 2.644µs 8.14% 1.770 3.751 1.73% 0.003µ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.456µs; 2.468µs] or [-0.240%; +0.240%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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 172.204ns 176.054ns ± 2.664ns 175.718ns ± 1.713ns 177.810ns 180.430ns 183.478ns 187.357ns 6.62% 0.877 1.328 1.51% 0.188ns 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 [175.685ns; 176.424ns] or [-0.210%; +0.210%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.034µs 5.085µs ± 0.044µs 5.060µs ± 0.019µs 5.133µs 5.157µs 5.168µs 5.169µs 2.16% 0.567 -1.354 0.87% 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.079µs; 5.091µs] or [-0.121%; +0.121%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.352µs 86.611µs ± 0.157µs 86.587µs ± 0.046µs 86.637µs 86.733µs 87.095µs 88.177µs 1.84% 6.458 55.332 0.18% 0.011µ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.589µs; 86.633µs] or [-0.025%; +0.025%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.192ms 6.468ms ± 0.055ms 6.470ms ± 0.023ms 6.493ms 6.532ms 6.580ms 6.650ms 2.78% -1.640 7.382 0.84% 0.004ms 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.460ms; 6.475ms] or [-0.117%; +0.117%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.895µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.917µs 3.920µs 3.922µs 0.24% -0.809 8.557 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 254961550.781op/s 255571866.161op/s ± 177104.171op/s 255584217.676op/s ± 100515.634op/s 255676018.872op/s 255784800.682op/s 255839132.911op/s 256731982.658op/s 0.45% 0.829 8.683 0.07% 12523.156op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 78.671µs 81.291µs ± 1.027µs 81.340µs ± 0.668µs 82.008µs 82.886µs 83.345µs 84.262µs 3.59% -0.173 -0.168 1.26% 0.073µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 11867740.115op/s 12303451.089op/s ± 155795.123op/s 12294006.755op/s ± 100217.964op/s 12395352.176op/s 12575017.070op/s 12688325.566op/s 12711128.748op/s 3.39% 0.241 -0.151 1.26% 11016.379op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 71.584µs 72.468µs ± 0.429µs 72.433µs ± 0.268µs 72.711µs 73.261µs 73.524µs 73.689µs 1.74% 0.403 -0.166 0.59% 0.030µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13570459.044op/s 13799598.686op/s ± 81419.059op/s 13805953.161op/s ± 51211.603op/s 13854872.298op/s 13924393.248op/s 13948313.336op/s 13969599.338op/s 1.19% -0.374 -0.197 0.59% 5757.197op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.897µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.921µs 3.921µs 0.22% -0.378 5.049 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255034334.883op/s 255584495.058op/s ± 179491.350op/s 255605707.097op/s ± 103920.371op/s 255692578.525op/s 255809872.899op/s 255881909.777op/s 256623948.865op/s 0.40% 0.393 5.118 0.07% 12691.955op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 68.459µs 69.415µs ± 0.410µs 69.386µs ± 0.249µs 69.648µs 70.093µs 70.440µs 70.662µs 1.84% 0.447 0.213 0.59% 0.029µs 1 200
credit_card/is_card_number/378282246310005 throughput 14151840.662op/s 14406652.729op/s ± 84846.461op/s 14412097.735op/s ± 51858.095op/s 14462615.248op/s 14526715.218op/s 14583448.871op/s 14607309.679op/s 1.35% -0.412 0.172 0.59% 5999.551op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.354µs 45.695µs ± 0.148µs 45.711µs ± 0.119µs 45.811µs 45.922µs 45.937µs 45.946µs 0.51% -0.233 -0.811 0.32% 0.010µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21764552.659op/s 21884670.319op/s ± 71088.977op/s 21876440.168op/s ± 56723.580op/s 21937587.863op/s 22010575.085op/s 22037527.384op/s 22048716.387op/s 0.79% 0.244 -0.803 0.32% 5026.750op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.428µs 6.438µs ± 0.005µs 6.437µs ± 0.003µs 6.441µs 6.446µs 6.447µs 6.450µs 0.19% 0.157 -0.691 0.07% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 155046478.524op/s 155334126.530op/s ± 110142.654op/s 155345256.334op/s ± 79491.343op/s 155411745.243op/s 155504009.635op/s 155543388.764op/s 155559510.722op/s 0.14% -0.155 -0.692 0.07% 7788.262op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.892µs 3.914µs ± 0.003µs 3.914µs ± 0.002µs 3.916µs 3.918µs 3.920µs 3.923µs 0.22% -1.367 9.629 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254934595.213op/s 255502719.465op/s ± 206556.655op/s 255491786.461op/s ± 131918.364op/s 255628579.275op/s 255793802.175op/s 255897660.683op/s 256913521.763op/s 0.56% 1.390 9.803 0.08% 14605.761op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 62.246µs 64.164µs ± 0.588µs 64.248µs ± 0.400µs 64.572µs 65.050µs 65.470µs 65.496µs 1.94% -0.436 0.314 0.91% 0.042µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15268188.156op/s 15586397.487op/s ± 143527.934op/s 15564703.217op/s ± 96354.807op/s 15677608.456op/s 15828330.549op/s 15958388.129op/s 16065379.751op/s 3.22% 0.494 0.400 0.92% 10148.958op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 54.004µs 54.215µs ± 0.086µs 54.221µs ± 0.059µs 54.278µs 54.354µs 54.383µs 54.455µs 0.43% -0.108 -0.285 0.16% 0.006µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18363834.007op/s 18445123.793op/s ± 29109.294op/s 18443003.744op/s ± 20197.146op/s 18465300.933op/s 18496218.726op/s 18511958.114op/s 18517170.973op/s 0.40% 0.116 -0.285 0.16% 2058.338op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.896µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.918µs 3.922µs 3.927µs 0.38% 0.216 6.770 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254625844.015op/s 255567071.794op/s ± 199872.778op/s 255594966.320op/s ± 99041.479op/s 255685487.039op/s 255792246.512op/s 255855876.685op/s 256701207.631op/s 0.43% -0.195 6.820 0.08% 14133.140op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.197µs 50.474µs ± 0.094µs 50.470µs ± 0.051µs 50.521µs 50.604µs 50.706µs 50.991µs 1.03% 1.461 6.919 0.19% 0.007µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19611338.744op/s 19812287.460op/s ± 36940.123op/s 19813679.723op/s ± 20087.780op/s 19834020.651op/s 19863021.621op/s 19875780.270op/s 19921688.743op/s 0.55% -1.423 6.714 0.19% 2612.061op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.355µs 45.671µs ± 0.152µs 45.672µs ± 0.121µs 45.786µs 45.907µs 45.952µs 45.999µs 0.72% 0.009 -0.983 0.33% 0.011µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21739428.235op/s 21895864.790op/s ± 72826.355op/s 21895346.207op/s ± 57897.785op/s 21958499.108op/s 22008188.405op/s 22030872.129op/s 22048112.606op/s 0.70% 0.002 -0.984 0.33% 5149.601op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.429µs 6.437µs ± 0.004µs 6.436µs ± 0.003µs 6.440µs 6.444µs 6.448µs 6.451µs 0.23% 0.552 0.068 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 155018978.852op/s 155352833.632op/s ± 99748.415op/s 155377299.378op/s ± 68898.746op/s 155425629.689op/s 155495781.515op/s 155529863.704op/s 155537946.605op/s 0.10% -0.549 0.061 0.06% 7053.278op/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.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255547321.226op/s; 255596411.096op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [81.149µs; 81.433µs] or [-0.175%; +0.175%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12281859.383op/s; 12325042.795op/s] or [-0.175%; +0.175%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.409µs; 72.528µs] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13788314.787op/s; 13810882.584op/s] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255559619.283op/s; 255609370.833op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.358µs; 69.472µs] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/378282246310005 throughput [14394893.825op/s; 14418411.632op/s] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.674µs; 45.715µs] or [-0.045%; +0.045%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21874818.071op/s; 21894522.568op/s] or [-0.045%; +0.045%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.437µs; 6.438µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/x371413321323331 throughput [155318861.818op/s; 155349391.243op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.913µs; 3.914µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255474092.699op/s; 255531346.231op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.082µs; 64.245µs] or [-0.127%; +0.127%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15566505.896op/s; 15606289.078op/s] or [-0.128%; +0.128%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [54.203µs; 54.227µs] or [-0.022%; +0.022%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18441089.525op/s; 18449158.062op/s] or [-0.022%; +0.022%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255539371.350op/s; 255594772.239op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.461µs; 50.487µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19807167.914op/s; 19817407.005op/s] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.650µs; 45.692µs] or [-0.046%; +0.046%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21885771.757op/s; 21905957.822op/s] or [-0.046%; +0.046%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.436µs; 6.438µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155339009.461op/s; 155366657.803op/s] or [-0.009%; +0.009%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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 496.164µs 497.080µs ± 0.816µs 496.991µs ± 0.294µs 497.286µs 497.764µs 500.943µs 505.026µs 1.62% 5.923 48.962 0.16% 0.058µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1980098.035op/s 2011752.501op/s ± 3269.290op/s 2012107.859op/s ± 1188.480op/s 2013240.862op/s 2014529.559op/s 2014913.686op/s 2015464.435op/s 0.17% -5.846 47.918 0.16% 231.174op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.212µs 371.006µs ± 0.322µs 371.008µs ± 0.201µs 371.206µs 371.540µs 371.814µs 371.939µs 0.25% 0.095 0.023 0.09% 0.023µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2688609.775op/s 2695378.014op/s ± 2339.737op/s 2695361.406op/s ± 1460.419op/s 2696821.271op/s 2699133.424op/s 2700302.121op/s 2701157.552op/s 0.22% -0.090 0.018 0.09% 165.444op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.412µs 168.786µs ± 0.135µs 168.773µs ± 0.076µs 168.854µs 168.983µs 169.218µs 169.241µs 0.28% 0.636 1.731 0.08% 0.010µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5908740.195op/s 5924674.903op/s ± 4734.622op/s 5925124.886op/s ± 2668.163op/s 5927559.911op/s 5931357.476op/s 5935485.221op/s 5937826.537op/s 0.21% -0.628 1.719 0.08% 334.788op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.441µs 36.650µs ± 0.125µs 36.640µs ± 0.071µs 36.711µs 36.851µs 36.948µs 37.334µs 1.89% 1.546 5.976 0.34% 0.009µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26785544.062op/s 27285779.005op/s ± 92474.699op/s 27292710.093op/s ± 52929.295op/s 27346017.897op/s 27411844.446op/s 27438626.980op/s 27441941.327op/s 0.55% -1.490 5.646 0.34% 6538.949op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.202µs 46.323µs ± 0.063µs 46.316µs ± 0.043µs 46.361µs 46.444µs 46.476µs 46.514µs 0.43% 0.547 -0.083 0.14% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21499119.253op/s 21587800.160op/s ± 29418.797op/s 21591038.856op/s ± 20164.501op/s 21610839.565op/s 21630865.342op/s 21640479.071op/s 21644173.160op/s 0.25% -0.541 -0.092 0.14% 2080.223op/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.967µs; 497.193µs] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2011299.409op/s; 2012205.593op/s] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [370.961µs; 371.050µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2695053.749op/s; 2695702.279op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.767µs; 168.804µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5924018.730op/s; 5925331.076op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.632µs; 36.667µs] or [-0.047%; +0.047%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27272962.901op/s; 27298595.108op/s] or [-0.047%; +0.047%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.314µs; 46.331µs] or [-0.019%; +0.019%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21583722.998op/s; 21591877.323op/s] or [-0.019%; +0.019%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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 123.501µs 125.283µs ± 1.606µs 124.990µs ± 0.362µs 125.379µs 127.001µs 132.232µs 141.239µs 13.00% 6.363 53.006 1.28% 0.114µ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 [125.060µs; 125.505µs] or [-0.178%; +0.178%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.601ms 61.149ms ± 2.334ms 60.806ms ± 0.080ms 60.926ms 61.396ms 76.753ms 82.867ms 36.28% 8.098 65.203 3.81% 0.165ms 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.826ms; 61.473ms] or [-0.529%; +0.529%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.997µs 25.771µs ± 9.846µs 18.321µs ± 0.170µs 34.607µs 44.599µs 50.746µs 71.764µs 291.70% 1.138 1.246 38.11% 0.696µ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.406µs; 27.135µs] or [-5.295%; +5.295%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.566ms 14.622ms ± 0.032ms 14.618ms ± 0.015ms 14.634ms 14.665ms 14.752ms 14.812ms 1.33% 2.302 9.329 0.22% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.618ms; 14.627ms] or [-0.030%; +0.030%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.261µs 3.210µs ± 1.436µs 3.005µs ± 0.029µs 3.027µs 3.656µs 13.923µs 14.955µs 397.76% 7.408 55.791 44.61% 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.011µs; 3.409µs] or [-6.199%; +6.199%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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 239.633ns 250.463ns ± 11.786ns 245.473ns ± 3.836ns 253.638ns 281.821ns 286.618ns 287.269ns 17.03% 1.719 2.251 4.69% 0.833ns 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 [248.830ns; 252.096ns] or [-0.652%; +0.652%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.356µs 33.960µs ± 0.914µs 33.553µs ± 0.073µs 33.662µs 35.905µs 35.969µs 37.389µs 11.43% 1.748 1.345 2.69% 0.065µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [33.834µs; 34.087µs] or [-0.373%; +0.373%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6e39f29 1761681103 ffe-simplify-error-handling
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.788ms 10.810ms ± 0.013ms 10.808ms ± 0.007ms 10.816ms 10.834ms 10.845ms 10.887ms 0.73% 1.460 5.228 0.12% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.808ms; 10.812ms] or [-0.017%; +0.017%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Oct 28, 2025

Codecov Report

❌ Patch coverage is 0% with 27 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.79%. Comparing base (10298cb) to head (6e39f29).

Additional details and impacted files
@@                                 Coverage Diff                                 @@
##           sameerank/FFL-1284-Create-datadog-ffe-ffi-crate    #1285      +/-   ##
===================================================================================
+ Coverage                                            71.78%   71.79%   +0.01%     
===================================================================================
  Files                                                  372      371       -1     
  Lines                                                58251    58237      -14     
===================================================================================
+ Hits                                                 41813    41814       +1     
+ Misses                                               16438    16423      -15     
Components Coverage Δ
datadog-crashtracker 50.65% <ø> (ø)
datadog-crashtracker-ffi 5.86% <ø> (ø)
datadog-alloc 98.73% <ø> (ø)
data-pipeline 87.86% <ø> (ø)
data-pipeline-ffi 88.19% <ø> (ø)
ddcommon 84.31% <ø> (ø)
ddcommon-ffi 73.84% <ø> (ø)
ddtelemetry 60.02% <ø> (+0.03%) ⬆️
ddtelemetry-ffi 21.24% <ø> (ø)
dogstatsd-client 83.26% <ø> (ø)
datadog-ipc 82.39% <ø> (ø)
datadog-profiling 76.90% <ø> (ø)
datadog-profiling-ffi 62.12% <ø> (ø)
datadog-sidecar 37.24% <ø> (ø)
datdog-sidecar-ffi 13.71% <ø> (ø)
spawn-worker 55.18% <ø> (ø)
tinybytes 92.44% <ø> (ø)
datadog-trace-normalization 98.24% <ø> (ø)
datadog-trace-obfuscation 94.17% <ø> (ø)
datadog-trace-protobuf 59.65% <ø> (ø)
datadog-trace-utils 90.00% <ø> (ø)
datadog-tracer-flare 61.03% <ø> (ø)
datadog-log 75.57% <ø> (ø)
🚀 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 28, 2025

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 7.25 MB 7.25 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 71.36 MB 71.36 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 83.70 MB 83.70 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.20 MB 9.20 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 18.55 MB 18.55 MB 0% (0 B) 👌
/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 129.26 MB 129.28 MB +.01% (+16.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 678.15 MB 678.15 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 5.93 MB 5.93 MB 0% (0 B) 👌
/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.51 MB 17.51 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 32.46 MB 32.46 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 15.81 MB 15.81 MB 0% (0 B) 👌
/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 131.44 MB 131.44 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 666.67 MB 666.67 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 4.55 MB 4.55 MB 0% (0 B) 👌
/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.66 MB 18.66 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 30.52 MB 30.52 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 63.96 MB 63.96 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.56 MB 8.56 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 78.42 MB 78.42 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 9.91 MB 9.91 MB 0% (0 B) 👌

};
mut context: Handle<EvaluationContext>,
) -> Result<Handle<Assignment>> {
wrap_with_ffi_result!({
Copy link
Contributor

Choose a reason for hiding this comment

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

wrap_with_ffi_result is definitely cleaner and more consistent with the other FFIs!

@sameerank
Copy link
Contributor

/merge

@dd-devflow-routing-codex
Copy link

dd-devflow-routing-codex bot commented Oct 28, 2025

View all feedbacks in Devflow UI.

2025-10-28 20:38:21 UTC ℹ️ Start processing command /merge


2025-10-28 20:38:26 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in sameerank/FFL-1284-Create-datadog-ffe-ffi-crate is approximately 0s (p90).


2025-10-28 21:11:05 UTC ℹ️ MergeQueue: This merge request was merged

@dd-mergequeue dd-mergequeue bot merged commit c453cb9 into sameerank/FFL-1284-Create-datadog-ffe-ffi-crate Oct 28, 2025
37 checks passed
@dd-mergequeue dd-mergequeue bot deleted the ffe-simplify-error-handling branch October 28, 2025 21:11
dd-mergequeue bot pushed a commit that referenced this pull request Nov 10, 2025
Add FFI bindings for datadog-ffe

Creates C-compatible FFI layer for Feature Flagging & Experimentation:

- Add datadog-ffe-ffi crate following ddsketch-ffi patterns
- Implement Handle<T> wrappers for Configuration, EvaluationContext, Assignment
- Export get_assignment, configuration_new, evaluation_context_new functions
- Add memory management with drop functions
- Generate C headers via cbindgen for Ruby integration
- Update Cargo.toml to include new FFI crate in workspace

Fix missing newlines at ends of files

Fix Rust formatting issues in datadog-ffe-ffi

- Remove trailing whitespace from doc comments
- Reformat function call in assignment.rs to fit line length constraints

Remove unused NULL_POINTER_ERROR constant from error.rs

Fix formatting in assignment.rs by removing trailing whitespace from doc comments

Update LICENSE-3rdparty.yml to include datadog-ffe-ffi

Add datadog-ffe-ffi Cargo.toml to Dockerfile.build

Set datadog-ffe-ffi version to 0.1.0 to match pre-release status

Update Cargo.lock

Refactor build script and cbindgen configuration

- Updated build.rs to use a variable for the header name and improved readability.
- Modified cbindgen.toml to reorganize export settings and enforce naming conventions for types and functions.
- Added Clippy lints in lib.rs to enhance code quality and prevent common pitfalls.

Update CODEOWNERS to include datadog-ffe-ffi and team

Update datadog-ffe-ffi/Cargo.toml

Pin datadog-ffe to exact version

Co-authored-by: Oleksii Shmalko <[email protected]>

refactor(ffe): simplify error handling (#1285)

refactor(ffe): simplify error handling

Merge branch 'sameerank/FFL-1284-Create-datadog-ffe-ffi-crate' into ffe-simplify-error-handling

Co-authored-by: sameerank <[email protected]>

Replace single-attribute constructor with multi-attribute API

Replace ddog_ffe_evaluation_context_new_with_attribute with ddog_ffe_evaluation_context_new_with_attributes that accepts an array of AttributePair structs.

Remove unnecessary whitespace in evaluation_context.rs

Fix documentation formatting in evaluation_context.rs

Fix Cargo.toml

Prevent malloc error in drop functions

Handle take() errors gracefully in ddog_ffe_configuration_drop and ddog_ffe_assignment_drop to prevent malloc corruption from double-free or use-after-free scenarios. Previously, take() failures would panic and cause "pointer being freed was not allocated" errors.

Update drop functions to simplify error handling

Refactor EvaluationContext API

- Changed the `context` parameter in `ddog_ffe_get_assignment` to be a pointer for consistency.
- Removed the single-attribute constructor `ddog_ffe_evaluation_context_new` and updated the multi-attribute constructor's documentation for clarity.

Merge branch 'main' into sameerank/FFL-1284-Create-datadog-ffe-ffi-crate

[ffe] add pyo3 conversion methods

[ffe] Remove unused errors

[ffe] step back and remove IntoPyObject types

These will be defined in dd-trace-py to better match what Python/OF
need.

Revert "test(ffe): run sdk tests individually (#1273)"

This reverts commit b9c68ca.

Test generation in build.rs made tests hard to edit.

[ffe] Expose EvaluationFailure

This is required to allow tracers return more precise error codes.

[ffe] remove support for JSON:API

Merge remote-tracking branch 'origin/main' into HEAD

[ffe] fix clippy

Merge remote-tracking branch 'origin/main' into HEAD

Update datadog-ffe-ffi/src/evaluation_context.rs

Co-authored-by: Oleksii Shmalko <[email protected]>

Lint fix

Replace Assignment with ResolutionDetails structure

Replace AssignmentValue with C-compatible value representation

Add error mapping for ResolutionDetails error handling

Lint fixes

Clippy fixes

refactor(ffe): merge EvaluationError and EvalutionFailure into one type

The distinction served us well in Eppo but it's less useful as we're
migrating to OpenFeature and it handles these various errors rather
similarly.

Merge remote-tracking branch 'origin/ffe-pyo3-methods' into HEAD

feat: handle non-string attributes

feat(ffe): adding accessors for ResolutionDetails

feat(ffe): preserve json raw value

datadog-ffe-ffi: finish assignment getters

add missing license header

Merge remote-tracking branch 'origin/main' into HEAD

fix tests

fix parsing RawValue through TryParse

(I think) the way serde_json implements untagged enum parsing is by
first parsing into serde_json::Value and then parsing that to one of
the variants. This breaks RawValue deserialization because Value does
not hold onto original string.

This PR makes TryParse work by quickly scanning into RawValue first,
and then trying to parse it into target type. If that parsing fails,
the RawValue is copied into Box.

Merge remote-tracking branch 'origin/main' into HEAD

feat: support multiple/number expected flag type

Merge remote-tracking branch 'origin/main' into HEAD

merge main

Merge main@origin

Co-authored-by: dd-oleksii <[email protected]>
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