Skip to content

Conversation

@vandonr
Copy link
Contributor

@vandonr vandonr commented Nov 24, 2025

Summary of changes

  • replace optential : in values before we call the normalize method, so that it can squash them with other special chars if present
  • truncate to 100 char to avoid transmitting unnecessary bytes

Reason for change

image

Implementation details

Test coverage

I need to find a way to inject arbitrary values 😬

Other details

@vandonr vandonr requested a review from a team as a code owner November 24, 2025 14:35
@github-actions github-actions bot added the area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) label Nov 24, 2025
@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Nov 24, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7856) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration76.67 ± (76.43 - 77.46) ms74.55 ± (74.97 - 75.84) ms-2.8%
.NET Framework 4.8 - Bailout
duration79.31 ± (79.23 - 79.86) ms77.72 ± (77.89 - 78.46) ms-2.0%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1063.58 ± (1063.74 - 1071.29) ms1058.60 ± (1059.55 - 1069.38) ms-0.5%
.NET Core 3.1 - Baseline
process.internal_duration_ms23.06 ± (22.99 - 23.12) ms22.93 ± (22.84 - 23.01) ms-0.6%
process.time_to_main_ms88.91 ± (88.56 - 89.26) ms86.68 ± (86.25 - 87.10) ms-2.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.91 - 10.92) MB10.90 ± (10.90 - 10.91) MB-0.1%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.94 ± (22.87 - 23.01) ms22.84 ± (22.77 - 22.91) ms-0.4%
process.time_to_main_ms90.14 ± (89.72 - 90.56) ms88.61 ± (88.14 - 89.07) ms-1.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.96 - 10.96) MB10.95 ± (10.95 - 10.95) MB-0.1%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms225.23 ± (223.66 - 226.80) ms223.14 ± (221.68 - 224.59) ms-0.9%
process.time_to_main_ms506.63 ± (505.42 - 507.84) ms502.25 ± (500.85 - 503.64) ms-0.9%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.85 ± (47.83 - 47.87) MB47.81 ± (47.78 - 47.83) MB-0.1%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.1%
.NET 6 - Baseline
process.internal_duration_ms21.72 ± (21.66 - 21.78) ms21.67 ± (21.59 - 21.75) ms-0.2%
process.time_to_main_ms76.43 ± (76.14 - 76.72) ms75.91 ± (75.53 - 76.28) ms-0.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.59 ± (10.59 - 10.59) MB10.63 ± (10.63 - 10.64) MB+0.4%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.65 ± (21.59 - 21.71) ms21.66 ± (21.59 - 21.73) ms+0.0%✅⬆️
process.time_to_main_ms76.88 ± (76.55 - 77.21) ms78.26 ± (77.82 - 78.70) ms+1.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.64 ± (10.64 - 10.64) MB10.68 ± (10.67 - 10.68) MB+0.3%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms213.09 ± (212.04 - 214.14) ms213.49 ± (212.26 - 214.72) ms+0.2%✅⬆️
process.time_to_main_ms470.36 ± (469.32 - 471.39) ms472.02 ± (470.81 - 473.23) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.08 ± (48.06 - 48.11) MB48.05 ± (48.03 - 48.08) MB-0.1%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.0%
.NET 8 - Baseline
process.internal_duration_ms19.93 ± (19.87 - 20.00) ms19.95 ± (19.87 - 20.03) ms+0.1%✅⬆️
process.time_to_main_ms76.27 ± (75.91 - 76.63) ms75.50 ± (75.11 - 75.89) ms-1.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.64 ± (7.63 - 7.65) MB7.65 ± (7.65 - 7.66) MB+0.2%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.90 ± (19.85 - 19.96) ms19.90 ± (19.83 - 19.97) ms-0.0%
process.time_to_main_ms76.91 ± (76.61 - 77.20) ms76.90 ± (76.50 - 77.31) ms-0.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.69 ± (7.68 - 7.69) MB7.71 ± (7.71 - 7.72) MB+0.3%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms194.14 ± (192.94 - 195.34) ms194.88 ± (193.78 - 195.98) ms+0.4%✅⬆️
process.time_to_main_ms457.75 ± (456.72 - 458.78) ms460.31 ± (459.17 - 461.46) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.41 ± (36.37 - 36.45) MB36.55 ± (36.51 - 36.60) MB+0.4%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)-0.0%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration192.40 ± (192.45 - 193.31) ms193.88 ± (194.11 - 194.97) ms+0.8%✅⬆️
.NET Framework 4.8 - Bailout
duration195.04 ± (194.82 - 195.27) ms199.82 ± (200.00 - 200.96) ms+2.5%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1104.03 ± (1110.09 - 1119.81) ms1111.57 ± (1113.27 - 1120.73) ms+0.7%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms186.65 ± (186.33 - 186.96) ms189.70 ± (189.32 - 190.07) ms+1.6%✅⬆️
process.time_to_main_ms80.03 ± (79.85 - 80.21) ms81.39 ± (81.14 - 81.63) ms+1.7%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.19 ± (16.17 - 16.21) MB16.11 ± (16.08 - 16.13) MB-0.5%
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (19 - 20)-0.1%
.NET Core 3.1 - Bailout
process.internal_duration_ms186.67 ± (186.35 - 187.00) ms195.03 ± (194.55 - 195.51) ms+4.5%✅⬆️
process.time_to_main_ms81.53 ± (81.35 - 81.70) ms85.26 ± (84.99 - 85.54) ms+4.6%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.18 ± (16.11 - 16.25) MB16.11 ± (16.09 - 16.12) MB-0.5%
runtime.dotnet.threads.count21 ± (20 - 21)21 ± (20 - 21)+0.0%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms396.58 ± (393.84 - 399.32) ms405.09 ± (402.27 - 407.91) ms+2.1%✅⬆️
process.time_to_main_ms470.63 ± (470.00 - 471.26) ms479.86 ± (478.89 - 480.83) ms+2.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.58 ± (58.43 - 58.72) MB58.85 ± (58.74 - 58.97) MB+0.5%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms190.63 ± (190.38 - 190.88) ms195.77 ± (195.32 - 196.22) ms+2.7%✅⬆️
process.time_to_main_ms69.37 ± (69.26 - 69.49) ms71.08 ± (70.87 - 71.29) ms+2.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.26 ± (16.14 - 16.37) MB16.36 ± (16.34 - 16.39) MB+0.7%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)19 ± (19 - 19)+4.8%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms190.63 ± (190.25 - 191.01) ms196.54 ± (196.04 - 197.04) ms+3.1%✅⬆️
process.time_to_main_ms70.51 ± (70.39 - 70.64) ms72.61 ± (72.42 - 72.80) ms+3.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.04 ± (15.88 - 16.20) MB16.36 ± (16.33 - 16.39) MB+2.0%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (20 - 20)+6.2%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms405.02 ± (402.64 - 407.40) ms414.84 ± (412.89 - 416.78) ms+2.4%✅⬆️
process.time_to_main_ms438.30 ± (437.78 - 438.81) ms448.13 ± (447.18 - 449.08) ms+2.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.38 ± (58.22 - 58.54) MB59.43 ± (59.35 - 59.50) MB+1.8%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (30 - 30)+0.3%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms190.33 ± (189.96 - 190.69) ms194.01 ± (193.51 - 194.51) ms+1.9%✅⬆️
process.time_to_main_ms69.35 ± (69.12 - 69.58) ms70.56 ± (70.34 - 70.78) ms+1.7%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.75 ± (11.72 - 11.77) MB11.72 ± (11.70 - 11.73) MB-0.3%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.6%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms188.05 ± (187.85 - 188.25) ms194.69 ± (194.21 - 195.18) ms+3.5%✅⬆️
process.time_to_main_ms70.00 ± (69.91 - 70.09) ms71.99 ± (71.79 - 72.19) ms+2.8%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.83 ± (11.80 - 11.86) MB11.76 ± (11.75 - 11.78) MB-0.5%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.9%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms364.31 ± (362.97 - 365.64) ms367.54 ± (366.07 - 369.01) ms+0.9%✅⬆️
process.time_to_main_ms426.43 ± (425.83 - 427.03) ms435.73 ± (434.97 - 436.48) ms+2.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.83 ± (47.79 - 47.86) MB47.94 ± (47.92 - 47.97) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.2%✅⬆️
Comparison explanation

Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (75ms)  : 69, 82
    master - mean (77ms)  : 70, 84

    section Bailout
    This PR (7856) - mean (78ms)  : 74, 83
    master - mean (80ms)  : 75, 84

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (1,064ms)  : 994, 1135
    master - mean (1,068ms)  : 1013, 1122

Loading
FakeDbCommand (.NET Core 3.1)
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (117ms)  : 109, 125
    master - mean (120ms)  : 112, 127

    section Bailout
    This PR (7856) - mean (119ms)  : 111, 128
    master - mean (121ms)  : 114, 127

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (760ms)  : 715, 805
    master - mean (773ms)  : 733, 813

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (105ms)  : 96, 113
    master - mean (105ms)  : 98, 112

    section Bailout
    This PR (7856) - mean (107ms)  : 99, 116
    master - mean (106ms)  : 100, 111

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (715ms)  : 684, 746
    master - mean (711ms)  : 682, 740

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (104ms)  : 96, 112
    master - mean (105ms)  : 97, 113

    section Bailout
    This PR (7856) - mean (105ms)  : 98, 113
    master - mean (105ms)  : 100, 111

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (691ms)  : 660, 723
    master - mean (687ms)  : 650, 725

Loading
HttpMessageHandler (.NET Framework 4.8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (195ms)  : 189, 201
    master - mean (193ms)  : 188, 197

    section Bailout
    This PR (7856) - mean (200ms)  : 194, 207
    master - mean (195ms)  : 193, 197

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (1,117ms)  : 1064, 1170
    master - mean (1,115ms)  : 1043, 1187

Loading
HttpMessageHandler (.NET Core 3.1)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (280ms)  : 273, 287
    master - mean (275ms)  : 270, 280

    section Bailout
    This PR (7856) - mean (289ms)  : 276, 302
    master - mean (276ms)  : 272, 280

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (921ms)  : 874, 968
    master - mean (903ms)  : 854, 951

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (275ms)  : 267, 283
    master - mean (268ms)  : 265, 272

    section Bailout
    This PR (7856) - mean (278ms)  : 270, 285
    master - mean (269ms)  : 264, 274

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (896ms)  : 861, 931
    master - mean (875ms)  : 834, 917

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7856) - mean (275ms)  : 266, 284
    master - mean (269ms)  : 264, 274

    section Bailout
    This PR (7856) - mean (277ms)  : 267, 287
    master - mean (267ms)  : 265, 270

    section CallTarget+Inlining+NGEN
    This PR (7856) - mean (835ms)  : 804, 867
    master - mean (822ms)  : 802, 841

Loading

@pr-commenter
Copy link

pr-commenter bot commented Dec 1, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7856 compared to master:

  • All benchmarks have the same speed
  • 5 benchmarks have fewer allocations
  • 5 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.6μs 59.2ns 360ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 14.3μs 73ns 350ns 0 0 0 5.73 KB
master StartStopWithChild net472 22.9μs 118ns 728ns 0.896 0.336 0 6.14 KB
#7856 StartStopWithChild net6.0 11μs 61.9ns 411ns 0 0 0 5.51 KB
#7856 StartStopWithChild netcoreapp3.1 13.8μs 58.4ns 226ns 0 0 0 5.74 KB
#7856 StartStopWithChild net472 22.6μs 118ns 604ns 0.903 0.338 0 6.11 KB
Benchmarks.Trace.AgentWriterBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 N/A N/A N/A NaN NaN NaN 0 b
master WriteAndFlushEnrichedTraces netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master WriteAndFlushEnrichedTraces net472 N/A N/A N/A NaN NaN NaN 0 b
#7856 WriteAndFlushEnrichedTraces net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7856 WriteAndFlushEnrichedTraces netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7856 WriteAndFlushEnrichedTraces net472 N/A N/A N/A NaN NaN NaN 0 b
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 1.08μs 5.79ns 33.3ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.39μs 7.9ns 55.9ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.11μs 1.11ns 4.3ns 0.194 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.22μs 4.09ns 15.8ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.35μs 43.6ns 175ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.58μs 3.67ns 14.2ns 0.718 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 321ns 1.78ns 11ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 405ns 1.99ns 8.42ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 299ns 0.178ns 0.667ns 0.0442 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.27μs 31.4ns 137ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.87μs 36.9ns 148ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.6μs 1.21ns 4.53ns 0.598 0 0 3.8 KB
#7856 AllCycleSimpleBody net6.0 1.07μs 5.93ns 38.5ns 0 0 0 1.22 KB
#7856 AllCycleSimpleBody netcoreapp3.1 1.41μs 7.81ns 50.6ns 0 0 0 1.2 KB
#7856 AllCycleSimpleBody net472 1.04μs 0.294ns 1.14ns 0.194 0 0 1.23 KB
#7856 AllCycleMoreComplexBody net6.0 7.14μs 36.4ns 171ns 0 0 0 4.72 KB
#7856 AllCycleMoreComplexBody netcoreapp3.1 9.08μs 35.5ns 137ns 0 0 0 4.62 KB
#7856 AllCycleMoreComplexBody net472 7.48μs 3.95ns 14.8ns 0.749 0 0 4.74 KB
#7856 ObjectExtractorSimpleBody net6.0 321ns 1.39ns 5.4ns 0 0 0 280 B
#7856 ObjectExtractorSimpleBody netcoreapp3.1 399ns 2.01ns 8.52ns 0 0 0 272 B
#7856 ObjectExtractorSimpleBody net472 299ns 0.191ns 0.739ns 0.0436 0 0 281 B
#7856 ObjectExtractorMoreComplexBody net6.0 6.32μs 30.6ns 133ns 0 0 0 3.78 KB
#7856 ObjectExtractorMoreComplexBody netcoreapp3.1 7.9μs 40.7ns 199ns 0 0 0 3.69 KB
#7856 ObjectExtractorMoreComplexBody net472 6.7μs 2.46ns 9.53ns 0.602 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 76.3μs 214ns 828ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.7μs 24.1ns 90.3ns 0 0 0 32.4 KB
master EncodeArgs net472 110μs 27ns 105ns 4.94 0 0 32.51 KB
master EncodeLegacyArgs net6.0 144μs 26ns 101ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 201μs 755ns 2.93μs 0 0 0 2.15 KB
master EncodeLegacyArgs net472 265μs 142ns 551ns 0 0 0 2.16 KB
#7856 EncodeArgs net6.0 77.2μs 203ns 761ns 0 0 0 32.4 KB
#7856 EncodeArgs netcoreapp3.1 97.1μs 232ns 900ns 0 0 0 32.4 KB
#7856 EncodeArgs net472 109μs 12.1ns 47ns 4.89 0 0 32.51 KB
#7856 EncodeLegacyArgs net6.0 143μs 32.2ns 125ns 0 0 0 2.14 KB
#7856 EncodeLegacyArgs netcoreapp3.1 195μs 164ns 633ns 0 0 0 2.15 KB
#7856 EncodeLegacyArgs net472 267μs 17ns 61.2ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7856

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑net6.0 2.83 KB 3.17 KB 336 B 11.86%
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑net6.0 5.48 KB 5.77 KB 288 B 5.26%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 446μs 2.59μs 23.2μs 0 0 0 5.48 KB
master RunWafRealisticBenchmark netcoreapp3.1 473μs 2.77μs 25.8μs 0 0 0 4.58 KB
master RunWafRealisticBenchmark net472 492μs 356ns 1.28μs 0 0 0 0 b
master RunWafRealisticBenchmarkWithAttack net6.0 321μs 920ns 3.19μs 0 0 0 2.83 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 362μs 3.19μs 31.1μs 0 0 0 2.32 KB
master RunWafRealisticBenchmarkWithAttack net472 368μs 449ns 1.68μs 0 0 0 0 b
#7856 RunWafRealisticBenchmark net6.0 422μs 1.66μs 6.21μs 0 0 0 5.77 KB
#7856 RunWafRealisticBenchmark netcoreapp3.1 448μs 935ns 3.37μs 0 0 0 4.58 KB
#7856 RunWafRealisticBenchmark net472 493μs 346ns 1.2μs 0 0 0 0 b
#7856 RunWafRealisticBenchmarkWithAttack net6.0 311μs 769ns 2.66μs 0 0 0 3.17 KB
#7856 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 367μs 3.75μs 35.4μs 0 0 0 2.32 KB
#7856 RunWafRealisticBenchmarkWithAttack net472 369μs 107ns 370ns 0 0 0 0 b
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 60.6μs 36.8ns 133ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 72.2μs 334ns 1.34μs 0 0 0 17.42 KB
master SendRequest net472 0.161ns 0.00536ns 0.0208ns 0 0 0 0 b
#7856 SendRequest net6.0 61.3μs 56.4ns 211ns 0 0 0 14.52 KB
#7856 SendRequest netcoreapp3.1 72.2μs 386ns 2.04μs 0 0 0 17.42 KB
#7856 SendRequest net472 0.00678ns 0.00253ns 0.00982ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7856

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 976 B 640 B -336 B -34.43%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 640 B 304 B -336 B -52.50%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.89ms 1.31μs 4.9μs 0 0 0 640.3 KB
master OriginalCharSlice netcoreapp3.1 3.99ms 1.21μs 4.19μs 0 0 0 640.1 KB
master OriginalCharSlice net472 2.66ms 1.44μs 5.59μs 0 0 0 647.17 KB
master OptimizedCharSlice net6.0 1.42ms 502ns 1.74μs 0 0 0 976 B
master OptimizedCharSlice netcoreapp3.1 2.77ms 1.17μs 4.53μs 0 0 0 104 B
master OptimizedCharSlice net472 1.92ms 1.12μs 4.18μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 1.01ms 744ns 2.88μs 0 0 0 640 B
master OptimizedCharSliceWithPool netcoreapp3.1 1.92ms 1.72μs 6.64μs 0 0 0 104 B
master OptimizedCharSliceWithPool net472 1.14ms 273ns 946ns 0 0 0 0 b
#7856 OriginalCharSlice net6.0 2.05ms 712ns 2.76μs 0 0 0 640.98 KB
#7856 OriginalCharSlice netcoreapp3.1 3.97ms 1.23μs 4.62μs 0 0 0 640.1 KB
#7856 OriginalCharSlice net472 2.66ms 955ns 3.44μs 0 0 0 647.17 KB
#7856 OptimizedCharSlice net6.0 1.54ms 505ns 1.75μs 0 0 0 640 B
#7856 OptimizedCharSlice netcoreapp3.1 2.8ms 1.12μs 4.21μs 0 0 0 104 B
#7856 OptimizedCharSlice net472 1.98ms 2.24μs 8.67μs 0 0 0 0 b
#7856 OptimizedCharSliceWithPool net6.0 1.08ms 786ns 3.04μs 0 0 0 304 B
#7856 OptimizedCharSliceWithPool netcoreapp3.1 1.86ms 2.26μs 8.76μs 0 0 0 104 B
#7856 OptimizedCharSliceWithPool net472 1.18ms 689ns 2.67μs 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7856

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 55.79 KB 56.36 KB 572 B 1.03%

Fewer allocations 🎉 in #7856

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 42.23 KB 41.79 KB -448 B -1.06%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 714μs 3.63μs 16.6μs 0 0 0 42.23 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 746μs 4.1μs 24.9μs 0 0 0 41.86 KB
master WriteAndFlushEnrichedTraces net472 939μs 4.3μs 23.2μs 4.46 0 0 55.79 KB
#7856 WriteAndFlushEnrichedTraces net6.0 679μs 1.01μs 3.93μs 0 0 0 41.79 KB
#7856 WriteAndFlushEnrichedTraces netcoreapp3.1 744μs 3.98μs 21.8μs 0 0 0 41.8 KB
#7856 WriteAndFlushEnrichedTraces net472 968μs 3.22μs 12μs 8.93 4.46 0 56.36 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.91μs 8.67ns 33.6ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.53μs 5.29ns 20.5ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.74μs 3.2ns 12.4ns 0.151 0 0 987 B
#7856 ExecuteNonQuery net6.0 1.89μs 6.92ns 25.9ns 0 0 0 1.02 KB
#7856 ExecuteNonQuery netcoreapp3.1 2.5μs 3.72ns 13.4ns 0 0 0 1.02 KB
#7856 ExecuteNonQuery net472 2.73μs 2.53ns 9.47ns 0.153 0 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.75μs 9.2ns 44.1ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.26μs 10.9ns 45.1ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.48μs 1.22ns 4.56ns 0.157 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.87μs 7.73ns 30ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.41μs 7.48ns 25.9ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.69μs 4.57ns 17.7ns 0.167 0 0 1.1 KB
#7856 CallElasticsearch net6.0 1.75μs 4.74ns 18.4ns 0 0 0 1.03 KB
#7856 CallElasticsearch netcoreapp3.1 2.21μs 10.9ns 47.3ns 0 0 0 1.03 KB
#7856 CallElasticsearch net472 3.44μs 2.6ns 10.1ns 0.155 0 0 1.04 KB
#7856 CallElasticsearchAsync net6.0 1.88μs 8.26ns 32ns 0 0 0 1.01 KB
#7856 CallElasticsearchAsync netcoreapp3.1 2.41μs 9.64ns 37.3ns 0 0 0 1.08 KB
#7856 CallElasticsearchAsync net472 3.6μs 1.99ns 7.72ns 0.165 0 0 1.1 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.92μs 7.18ns 27.8ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.45μs 8.55ns 33.1ns 0 0 0 952 B
master ExecuteAsync net472 2.58μs 2.98ns 11.5ns 0.141 0 0 915 B
#7856 ExecuteAsync net6.0 1.85μs 9.54ns 42.6ns 0 0 0 952 B
#7856 ExecuteAsync netcoreapp3.1 2.35μs 10.9ns 44.9ns 0 0 0 952 B
#7856 ExecuteAsync net472 2.51μs 4.33ns 16.8ns 0.137 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 7μs 11.5ns 44.4ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.7μs 19.8ns 76.9ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 7.96ns 29.8ns 0.489 0 0 3.18 KB
#7856 SendAsync net6.0 7μs 15.7ns 60.9ns 0 0 0 2.36 KB
#7856 SendAsync netcoreapp3.1 8.82μs 25.1ns 97.2ns 0 0 0 2.9 KB
#7856 SendAsync net472 12.7μs 10.4ns 40.2ns 0.445 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7856

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.78 KB 46.47 KB 2.7 KB 6.16%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 278.53 KB 286.72 KB 8.19 KB 2.94%

Fewer allocations 🎉 in #7856

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 273.29 KB 258.73 KB -14.56 KB -5.33%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 273.14 KB 255.94 KB -17.21 KB -6.30%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 45μs 304ns 2.83μs 0 0 0 43.78 KB
master StringConcatBenchmark netcoreapp3.1 52.5μs 503ns 4.91μs 0 0 0 43.09 KB
master StringConcatBenchmark net472 57μs 278ns 1.15μs 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 460μs 1.51μs 8.01μs 0 0 0 273.29 KB
master StringConcatAspectBenchmark netcoreapp3.1 510μs 2.39μs 10.7μs 0 0 0 273.14 KB
master StringConcatAspectBenchmark net472 411μs 1.98μs 14.3μs 0 0 0 278.53 KB
#7856 StringConcatBenchmark net6.0 46μs 470ns 4.38μs 0 0 0 46.47 KB
#7856 StringConcatBenchmark netcoreapp3.1 49.1μs 233ns 1.56μs 0 0 0 43.24 KB
#7856 StringConcatBenchmark net472 57.3μs 211ns 818ns 0 0 0 57.34 KB
#7856 StringConcatAspectBenchmark net6.0 455μs 1.65μs 7.57μs 0 0 0 258.73 KB
#7856 StringConcatAspectBenchmark netcoreapp3.1 504μs 1.35μs 4.87μs 0 0 0 255.94 KB
#7856 StringConcatAspectBenchmark net472 401μs 1.59μs 5.96μs 0 0 0 286.72 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.71μs 13.2ns 54.3ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.62μs 12.5ns 48.5ns 0 0 0 1.7 KB
master EnrichedLog net472 3.95μs 6.07ns 23.5ns 0.254 0 0 1.64 KB
#7856 EnrichedLog net6.0 2.71μs 1.96ns 7.6ns 0 0 0 1.7 KB
#7856 EnrichedLog netcoreapp3.1 3.57μs 15.7ns 60.7ns 0 0 0 1.7 KB
#7856 EnrichedLog net472 3.98μs 4.15ns 16.1ns 0.258 0 0 1.64 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 123μs 78.6ns 305ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 126μs 43ns 161ns 0 0 0 4.31 KB
master EnrichedLog net472 165μs 56.7ns 204ns 0 0 0 4.51 KB
#7856 EnrichedLog net6.0 124μs 63.9ns 239ns 0 0 0 4.31 KB
#7856 EnrichedLog netcoreapp3.1 129μs 335ns 1.3μs 0 0 0 4.31 KB
#7856 EnrichedLog net472 169μs 127ns 492ns 0 0 0 4.52 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5.17μs 21.3ns 82.6ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 7.06μs 15.3ns 57.1ns 0 0 0 2.26 KB
master EnrichedLog net472 7.73μs 5.53ns 21.4ns 0.307 0 0 2.08 KB
#7856 EnrichedLog net6.0 4.85μs 21ns 75.7ns 0 0 0 2.26 KB
#7856 EnrichedLog netcoreapp3.1 6.95μs 22ns 85.3ns 0 0 0 2.26 KB
#7856 EnrichedLog net472 7.74μs 9.5ns 36.8ns 0.311 0 0 2.08 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 2.15μs 1.92ns 7.2ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.65μs 12.6ns 52ns 0 0 0 1.2 KB
master SendReceive net472 3.11μs 5.92ns 22.9ns 0.185 0 0 1.2 KB
#7856 SendReceive net6.0 1.97μs 9.84ns 36.8ns 0 0 0 1.2 KB
#7856 SendReceive netcoreapp3.1 2.51μs 12.3ns 50.9ns 0 0 0 1.2 KB
#7856 SendReceive net472 2.99μs 2.1ns 7.86ns 0.179 0 0 1.2 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.36μs 11.4ns 44.1ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.82μs 16.5ns 64ns 0 0 0 1.63 KB
master EnrichedLog net472 6.56μs 9.44ns 36.5ns 0.299 0 0 2.03 KB
#7856 EnrichedLog net6.0 4.36μs 12.5ns 48.6ns 0 0 0 1.58 KB
#7856 EnrichedLog netcoreapp3.1 5.77μs 8.16ns 31.6ns 0 0 0 1.63 KB
#7856 EnrichedLog net472 6.59μs 6.15ns 23.8ns 0.296 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 782ns 3.87ns 16.4ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 984ns 4.62ns 17.9ns 0 0 0 576 B
master StartFinishSpan net472 917ns 0.137ns 0.514ns 0.0879 0 0 578 B
master StartFinishScope net6.0 932ns 4.67ns 20.9ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.17μs 5.15ns 19.3ns 0 0 0 696 B
master StartFinishScope net472 1.13μs 0.23ns 0.86ns 0.102 0 0 658 B
master StartFinishTwoScopes net6.0 1.73μs 9.05ns 43.4ns 0 0 0 1.19 KB
master StartFinishTwoScopes netcoreapp3.1 2.24μs 11.4ns 54.5ns 0 0 0 1.19 KB
master StartFinishTwoScopes net472 2.2μs 1.84ns 6.89ns 0.166 0 0 1.08 KB
#7856 StartFinishSpan net6.0 780ns 0.299ns 1.12ns 0 0 0 576 B
#7856 StartFinishSpan netcoreapp3.1 963ns 5.03ns 24.1ns 0 0 0 576 B
#7856 StartFinishSpan net472 905ns 0.0613ns 0.221ns 0.0914 0 0 578 B
#7856 StartFinishScope net6.0 931ns 5.05ns 29ns 0 0 0 696 B
#7856 StartFinishScope netcoreapp3.1 1.14μs 5.85ns 27.5ns 0 0 0 696 B
#7856 StartFinishScope net472 1.1μs 0.129ns 0.5ns 0.105 0 0 658 B
#7856 StartFinishTwoScopes net6.0 1.79μs 8.81ns 36.3ns 0 0 0 1.19 KB
#7856 StartFinishTwoScopes netcoreapp3.1 2.22μs 9.89ns 38.3ns 0 0 0 1.19 KB
#7856 StartFinishTwoScopes net472 2.13μs 2.41ns 9.34ns 0.16 0 0 1.08 KB
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.1μs 1.17ns 4.52ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.42μs 7.26ns 33.3ns 0 0 0 696 B
master RunOnMethodBegin net472 1.43μs 1.4ns 5.43ns 0.101 0 0 658 B
#7856 RunOnMethodBegin net6.0 1.05μs 3ns 11.6ns 0 0 0 696 B
#7856 RunOnMethodBegin netcoreapp3.1 1.45μs 6.95ns 27.8ns 0 0 0 696 B
#7856 RunOnMethodBegin net472 1.44μs 1.07ns 4.13ns 0.1 0 0 658 B

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

Labels

area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants