Skip to content

Conversation

@vandonr
Copy link
Contributor

@vandonr vandonr commented Nov 6, 2025

Summary of changes

adding process tags at the ClientStatsPayload level.
See proto in the agent

Reason for change

AIDM-195

Implementation details

Test coverage

piggybacked on existing tests

Other details

I realized that dotnet doesn't write the service name at the top level, but only in the buckets. Doesn't seem to be a big issue, but there could be a win here by writing the service in the buckets only when there is an override.

@vandonr vandonr requested review from a team as code owners November 6, 2025 16:48
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@dd-trace-dotnet-ci-bot
Copy link

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7791) 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
duration74.95 ± (74.69 - 75.31) ms75.32 ± (75.40 - 76.04) ms+0.5%✅⬆️
.NET Framework 4.8 - Bailout
duration79.93 ± (79.78 - 80.34) ms80.35 ± (80.14 - 80.83) ms+0.5%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1129.37 ± (1133.11 - 1145.23) ms1115.76 ± (1116.25 - 1124.87) ms-1.2%
.NET Core 3.1 - Baseline
process.internal_duration_ms23.04 ± (22.95 - 23.14) ms23.13 ± (23.05 - 23.21) ms+0.4%✅⬆️
process.time_to_main_ms87.98 ± (87.60 - 88.35) ms87.77 ± (87.43 - 88.11) ms-0.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.92 - 10.93) MB10.92 ± (10.92 - 10.93) MB+0.0%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms23.05 ± (22.97 - 23.14) ms23.02 ± (22.94 - 23.10) ms-0.2%
process.time_to_main_ms90.14 ± (89.72 - 90.55) ms89.16 ± (88.80 - 89.53) ms-1.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.96 - 10.97) MB10.97 ± (10.97 - 10.98) MB+0.1%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms219.36 ± (218.06 - 220.66) ms219.82 ± (218.35 - 221.29) ms+0.2%✅⬆️
process.time_to_main_ms550.29 ± (549.24 - 551.34) ms548.97 ± (547.73 - 550.21) ms-0.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.65 ± (52.63 - 52.67) MB52.46 ± (52.44 - 52.48) MB-0.4%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.1%
.NET 6 - Baseline
process.internal_duration_ms21.69 ± (21.62 - 21.76) ms22.00 ± (21.93 - 22.08) ms+1.4%✅⬆️
process.time_to_main_ms76.82 ± (76.43 - 77.21) ms77.40 ± (77.04 - 77.76) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.62 - 10.62) MB10.62 ± (10.62 - 10.63) MB+0.0%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.73 ± (21.65 - 21.80) ms21.62 ± (21.56 - 21.68) ms-0.5%
process.time_to_main_ms76.96 ± (76.63 - 77.29) ms77.03 ± (76.76 - 77.30) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.66 ± (10.66 - 10.67) MB10.65 ± (10.65 - 10.66) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms207.78 ± (206.31 - 209.25) ms207.69 ± (206.07 - 209.31) ms-0.0%
process.time_to_main_ms516.85 ± (515.83 - 517.87) ms509.63 ± (508.57 - 510.68) ms-1.4%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.73 ± (51.71 - 51.75) MB51.55 ± (51.53 - 51.58) MB-0.3%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.0%
.NET 8 - Baseline
process.internal_duration_ms19.89 ± (19.83 - 19.94) ms19.95 ± (19.88 - 20.01) ms+0.3%✅⬆️
process.time_to_main_ms75.00 ± (74.64 - 75.35) ms75.15 ± (74.77 - 75.53) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.65 - 7.66) MB7.64 ± (7.64 - 7.65) MB-0.2%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.88 ± (19.83 - 19.94) ms19.71 ± (19.65 - 19.77) ms-0.9%
process.time_to_main_ms76.46 ± (76.17 - 76.74) ms76.02 ± (75.70 - 76.33) ms-0.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.71 ± (7.71 - 7.72) MB7.71 ± (7.70 - 7.71) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms193.06 ± (192.09 - 194.03) ms192.12 ± (191.16 - 193.07) ms-0.5%
process.time_to_main_ms498.27 ± (497.40 - 499.15) ms485.82 ± (484.87 - 486.78) ms-2.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed39.02 ± (38.97 - 39.06) MB38.87 ± (38.83 - 38.91) 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.63 ± (192.40 - 193.11) ms192.30 ± (192.32 - 193.19) ms-0.2%
.NET Framework 4.8 - Bailout
duration195.63 ± (195.49 - 196.17) ms195.61 ± (195.51 - 195.94) ms-0.0%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1166.42 ± (1173.09 - 1183.28) ms1167.66 ± (1171.22 - 1181.00) ms+0.1%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms188.56 ± (188.17 - 188.94) ms188.59 ± (188.26 - 188.92) ms+0.0%✅⬆️
process.time_to_main_ms80.70 ± (80.47 - 80.94) ms80.68 ± (80.43 - 80.94) ms-0.0%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.06 ± (16.03 - 16.09) MB16.15 ± (16.12 - 16.18) MB+0.6%✅⬆️
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (20 - 20)+0.2%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms187.54 ± (187.27 - 187.80) ms187.81 ± (187.42 - 188.20) ms+0.1%✅⬆️
process.time_to_main_ms81.80 ± (81.68 - 81.93) ms81.84 ± (81.69 - 81.99) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.15 ± (16.12 - 16.18) MB16.23 ± (16.20 - 16.26) MB+0.5%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)-0.2%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms392.08 ± (389.62 - 394.55) ms390.40 ± (388.21 - 392.59) ms-0.4%
process.time_to_main_ms518.56 ± (517.86 - 519.26) ms512.94 ± (512.44 - 513.43) ms-1.1%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed62.62 ± (62.46 - 62.77) MB62.50 ± (62.35 - 62.65) MB-0.2%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms192.10 ± (191.64 - 192.56) ms192.02 ± (191.64 - 192.41) ms-0.0%
process.time_to_main_ms70.05 ± (69.87 - 70.23) ms69.71 ± (69.51 - 69.92) ms-0.5%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.16 ± (16.04 - 16.28) MB16.30 ± (16.20 - 16.39) MB+0.8%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 19)19 ± (19 - 19)+2.8%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms190.48 ± (190.23 - 190.72) ms190.74 ± (190.52 - 190.96) ms+0.1%✅⬆️
process.time_to_main_ms70.50 ± (70.42 - 70.57) ms70.44 ± (70.37 - 70.51) ms-0.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.07 ± (15.92 - 16.22) MB16.12 ± (15.98 - 16.26) MB+0.3%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.1%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms413.47 ± (410.35 - 416.59) ms409.38 ± (406.40 - 412.36) ms-1.0%
process.time_to_main_ms487.92 ± (487.33 - 488.51) ms480.63 ± (479.99 - 481.26) ms-1.5%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.26 ± (62.12 - 62.40) MB61.99 ± (61.83 - 62.14) MB-0.4%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms190.17 ± (189.77 - 190.56) ms190.10 ± (189.76 - 190.44) ms-0.0%
process.time_to_main_ms69.29 ± (69.09 - 69.49) ms69.08 ± (68.92 - 69.25) ms-0.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.79 ± (11.76 - 11.82) MB11.76 ± (11.73 - 11.79) MB-0.3%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.3%
.NET 8 - Bailout
process.internal_duration_ms188.88 ± (188.66 - 189.11) ms190.16 ± (189.81 - 190.52) ms+0.7%✅⬆️
process.time_to_main_ms70.02 ± (69.92 - 70.11) ms70.31 ± (70.19 - 70.43) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.76 ± (11.67 - 11.86) MB11.80 ± (11.78 - 11.83) MB+0.3%✅⬆️
runtime.dotnet.threads.count19 ± (18 - 19)19 ± (19 - 19)+3.1%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms364.19 ± (362.95 - 365.44) ms360.75 ± (359.37 - 362.12) ms-0.9%
process.time_to_main_ms468.03 ± (467.34 - 468.72) ms457.03 ± (456.45 - 457.61) ms-2.4%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.49 ± (50.46 - 50.52) MB50.29 ± (50.25 - 50.33) MB-0.4%
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 (7791) - mean (76ms)  : 71, 80
    master - mean (75ms)  : 70, 80

    section Bailout
    This PR (7791) - mean (80ms)  : 76, 85
    master - mean (80ms)  : 76, 84

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (1,121ms)  : 1058, 1183
    master - mean (1,139ms)  : 1051, 1228

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 (7791) - mean (118ms)  : 112, 125
    master - mean (119ms)  : 112, 125

    section Bailout
    This PR (7791) - mean (120ms)  : 112, 128
    master - mean (121ms)  : 112, 130

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (803ms)  : 763, 843
    master - mean (808ms)  : 772, 845

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

    section Bailout
    This PR (7791) - mean (106ms)  : 100, 112
    master - mean (106ms)  : 99, 112

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (746ms)  : 708, 784
    master - mean (757ms)  : 716, 798

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

    section Bailout
    This PR (7791) - mean (104ms)  : 99, 109
    master - mean (105ms)  : 100, 110

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (709ms)  : 684, 735
    master - mean (732ms)  : 698, 766

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 (7791) - mean (193ms)  : 188, 197
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (7791) - mean (196ms)  : 194, 198
    master - mean (196ms)  : 192, 199

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (1,176ms)  : 1105, 1247
    master - mean (1,178ms)  : 1106, 1250

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 (7791) - mean (278ms)  : 272, 283
    master - mean (277ms)  : 271, 283

    section Bailout
    This PR (7791) - mean (278ms)  : 273, 283
    master - mean (277ms)  : 274, 280

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (933ms)  : 891, 976
    master - mean (941ms)  : 900, 982

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7791) - mean (270ms)  : 264, 276
    master - mean (270ms)  : 264, 277

    section Bailout
    This PR (7791) - mean (269ms)  : 266, 272
    master - mean (269ms)  : 266, 272

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (923ms)  : 863, 983
    master - mean (931ms)  : 884, 977

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

    section Bailout
    This PR (7791) - mean (270ms)  : 265, 275
    master - mean (268ms)  : 266, 271

    section CallTarget+Inlining+NGEN
    This PR (7791) - mean (850ms)  : 835, 865
    master - mean (864ms)  : 833, 894

Loading

@vandonr
Copy link
Contributor Author

vandonr commented Nov 17, 2025

@codex review

@chatgpt-codex-connector
Copy link

Codex Review: Didn't find any major issues. Keep it up!

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@pr-commenter
Copy link

pr-commenter bot commented Nov 17, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7791 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.645
  • 1 benchmarks are slower, with geometric mean 1.129
  • 7 benchmarks have fewer allocations
  • 7 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 ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.06 KB 6.03 KB -32 B -0.53%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.3μs 57.8ns 374ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 13.4μs 71.1ns 355ns 0 0 0 5.7 KB
master StartStopWithChild net472 22μs 119ns 662ns 0.999 0.333 0.111 6.06 KB
#7791 StartStopWithChild net6.0 10.5μs 56.8ns 306ns 0 0 0 5.52 KB
#7791 StartStopWithChild netcoreapp3.1 13.9μs 69.6ns 295ns 0 0 0 5.69 KB
#7791 StartStopWithChild net472 22.4μs 123ns 770ns 0.998 0.3 0.0998 6.03 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 3.31 KB 3.35 KB 46 B 1.39%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 925μs 551ns 2.13μs 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 82.4ns 297ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.21ms 568ns 2.2μs 0 0 0 3.31 KB
#7791 WriteAndFlushEnrichedTraces net6.0 928μs 73ns 273ns 0 0 0 2.71 KB
#7791 WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 258ns 965ns 0 0 0 2.7 KB
#7791 WriteAndFlushEnrichedTraces net472 1.2ms 111ns 430ns 0 0 0 3.35 KB
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.1μs 5.93ns 35.1ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.4μs 7.78ns 51ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.335ns 1.25ns 0.191 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 6.99μs 38.8ns 233ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.04μs 2.5ns 9.69ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.57μs 3.17ns 12.3ns 0.72 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 318ns 1.63ns 7.63ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 395ns 2.25ns 14.7ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 296ns 0.0704ns 0.264ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.33μs 28.5ns 110ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.75μs 39ns 165ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.73μs 4.41ns 17.1ns 0.574 0 0 3.8 KB
#7791 AllCycleSimpleBody net6.0 1.09μs 5.67ns 27.8ns 0 0 0 1.22 KB
#7791 AllCycleSimpleBody netcoreapp3.1 1.41μs 1.51ns 5.65ns 0 0 0 1.2 KB
#7791 AllCycleSimpleBody net472 1.01μs 0.742ns 2.87ns 0.195 0 0 1.23 KB
#7791 AllCycleMoreComplexBody net6.0 7.18μs 36.3ns 174ns 0 0 0 4.72 KB
#7791 AllCycleMoreComplexBody netcoreapp3.1 9.22μs 34.6ns 134ns 0 0 0 4.62 KB
#7791 AllCycleMoreComplexBody net472 7.71μs 6.63ns 25.7ns 0.73 0 0 4.74 KB
#7791 ObjectExtractorSimpleBody net6.0 320ns 0.189ns 0.731ns 0 0 0 280 B
#7791 ObjectExtractorSimpleBody netcoreapp3.1 392ns 2.22ns 14.7ns 0 0 0 272 B
#7791 ObjectExtractorSimpleBody net472 301ns 0.0196ns 0.0735ns 0.044 0 0 281 B
#7791 ObjectExtractorMoreComplexBody net6.0 6.34μs 30.6ns 126ns 0 0 0 3.78 KB
#7791 ObjectExtractorMoreComplexBody netcoreapp3.1 7.85μs 28.5ns 107ns 0 0 0 3.69 KB
#7791 ObjectExtractorMoreComplexBody net472 6.7μs 2.23ns 8.65ns 0.572 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 78.4μs 52.1ns 195ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 99.2μs 105ns 394ns 0 0 0 32.4 KB
master EncodeArgs net472 113μs 138ns 536ns 5.1 0 0 32.5 KB
master EncodeLegacyArgs net6.0 143μs 11.2ns 38.7ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 200μs 53.2ns 184ns 0 0 0 2.15 KB
master EncodeLegacyArgs net472 263μs 62.9ns 243ns 0 0 0 2.16 KB
#7791 EncodeArgs net6.0 78.2μs 152ns 525ns 0 0 0 32.4 KB
#7791 EncodeArgs netcoreapp3.1 96.9μs 255ns 989ns 0 0 0 32.4 KB
#7791 EncodeArgs net472 111μs 12.2ns 45.7ns 4.99 0 0 32.51 KB
#7791 EncodeLegacyArgs net6.0 144μs 18.4ns 63.8ns 0 0 0 2.14 KB
#7791 EncodeLegacyArgs netcoreapp3.1 194μs 79.9ns 309ns 0 0 0 2.14 KB
#7791 EncodeLegacyArgs net472 265μs 62.3ns 241ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7791

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.043 861,943.85 421,851.04

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 398μs 61.7ns 231ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 845μs 5.8μs 58μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 428μs 49.1ns 190ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 283μs 49.3ns 191ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 297μs 239ns 924ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 311μs 33ns 128ns 0 0 0 2.29 KB
#7791 RunWafRealisticBenchmark net6.0 394μs 94.5ns 341ns 0 0 0 4.55 KB
#7791 RunWafRealisticBenchmark netcoreapp3.1 423μs 624ns 2.16μs 0 0 0 4.48 KB
#7791 RunWafRealisticBenchmark net472 427μs 67.3ns 261ns 0 0 0 4.66 KB
#7791 RunWafRealisticBenchmarkWithAttack net6.0 283μs 44.6ns 173ns 0 0 0 2.24 KB
#7791 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 296μs 302ns 1.05μs 0 0 0 2.22 KB
#7791 RunWafRealisticBenchmarkWithAttack net472 314μs 31.4ns 113ns 0 0 0 2.29 KB
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.9μs 285ns 1.07μs 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.8μs 255ns 1.37μs 0 0 0 17.42 KB
master SendRequest net472 0.00399ns 0.00239ns 0.00893ns 0 0 0 0 b
#7791 SendRequest net6.0 61.1μs 93.6ns 350ns 0 0 0 14.52 KB
#7791 SendRequest netcoreapp3.1 71.4μs 240ns 898ns 0 0 0 17.42 KB
#7791 SendRequest net472 0.0105ns 0.00292ns 0.0113ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Slower ⚠️ More allocations ⚠️

Slower ⚠️ in #7791

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1.129 863,541.88 974,771.46

More allocations ⚠️ in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 0 b 73 B 73 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 0 b 1 B 1 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 0 b 47 B 47 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 3 B 4 B 1 B 33.33%

Fewer allocations 🎉 in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 7 B 4 B -3 B -42.86%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.93ms 5.6μs 21.7μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.1ms 1.22μs 4.73μs 0 0 0 640 KB
master OriginalCharSlice net472 2.56ms 420ns 1.51μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.4ms 219ns 849ns 0 0 0 7 B
master OptimizedCharSlice netcoreapp3.1 1.67ms 334ns 1.25μs 0 0 0 1 B
master OptimizedCharSlice net472 1.95ms 531ns 2.06μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 864μs 29.9ns 112ns 0 0 0 3 B
master OptimizedCharSliceWithPool netcoreapp3.1 797μs 76.4ns 296ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.15ms 147ns 568ns 0 0 0 0 b
#7791 OriginalCharSlice net6.0 1.91ms 219ns 819ns 0 0 0 640 KB
#7791 OriginalCharSlice netcoreapp3.1 2.09ms 9.33μs 34.9μs 0 0 0 640 KB
#7791 OriginalCharSlice net472 2.69ms 214ns 802ns 100 0 0 641.95 KB
#7791 OptimizedCharSlice net6.0 1.5ms 450ns 1.74μs 0 0 0 4 B
#7791 OptimizedCharSlice netcoreapp3.1 1.68ms 373ns 1.45μs 0 0 0 1 B
#7791 OptimizedCharSlice net472 1.95ms 378ns 1.46μs 0 0 0 73 B
#7791 OptimizedCharSliceWithPool net6.0 976μs 1.06μs 4.11μs 0 0 0 4 B
#7791 OptimizedCharSliceWithPool netcoreapp3.1 827μs 74.5ns 289ns 0 0 0 1 B
#7791 OptimizedCharSliceWithPool net472 1.19ms 119ns 461ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 Fewer allocations 🎉

Faster 🎉 in #7791

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.325 853,658.55 644,478.35 bimodal

Fewer allocations 🎉 in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 56.73 KB 55.57 KB -1.16 KB -2.05%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 650μs 963ns 3.73μs 0 0 0 41.69 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 828μs 4.8μs 39.5μs 0 0 0 42.13 KB
master WriteAndFlushEnrichedTraces net472 1.01ms 5.15μs 24.2μs 8.33 0 0 56.73 KB
#7791 WriteAndFlushEnrichedTraces net6.0 698μs 3.64μs 20.9μs 0 0 0 41.74 KB
#7791 WriteAndFlushEnrichedTraces netcoreapp3.1 642μs 2.59μs 9.68μs 0 0 0 42 KB
#7791 WriteAndFlushEnrichedTraces net472 934μs 3.93μs 15.2μs 4.46 0 0 55.57 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.9μs 7.13ns 26.7ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.63μs 9.29ns 36ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.86μs 4.11ns 15.4ns 0.154 0.014 0 987 B
#7791 ExecuteNonQuery net6.0 1.94μs 0.46ns 1.72ns 0 0 0 1.02 KB
#7791 ExecuteNonQuery netcoreapp3.1 2.77μs 11.1ns 41.6ns 0 0 0 1.02 KB
#7791 ExecuteNonQuery net472 2.9μs 2.72ns 10.5ns 0.153 0.0153 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.7μs 8.37ns 35.5ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.3μs 10.7ns 42.7ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.5μs 2.92ns 10.9ns 0.157 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.88μs 3.46ns 12.5ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.38μs 9.31ns 36ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.69μs 4.1ns 15.9ns 0.166 0 0 1.1 KB
#7791 CallElasticsearch net6.0 1.74μs 7.74ns 30ns 0 0 0 1.03 KB
#7791 CallElasticsearch netcoreapp3.1 2.23μs 7.15ns 27.7ns 0 0 0 1.03 KB
#7791 CallElasticsearch net472 3.47μs 2.61ns 10.1ns 0.157 0 0 1.04 KB
#7791 CallElasticsearchAsync net6.0 1.9μs 5ns 19.4ns 0 0 0 1.01 KB
#7791 CallElasticsearchAsync netcoreapp3.1 2.46μs 8.2ns 30.7ns 0 0 0 1.08 KB
#7791 CallElasticsearchAsync net472 3.64μs 3.38ns 13.1ns 0.163 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.97μs 1.76ns 6.83ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.55μs 12.5ns 49.9ns 0 0 0 952 B
master ExecuteAsync net472 2.65μs 2.67ns 10.3ns 0.133 0 0 915 B
#7791 ExecuteAsync net6.0 1.88μs 6.63ns 25.7ns 0 0 0 952 B
#7791 ExecuteAsync netcoreapp3.1 2.49μs 11.9ns 50.5ns 0 0 0 952 B
#7791 ExecuteAsync net472 2.54μs 2.27ns 8.79ns 0.139 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 6.78μs 8.74ns 31.5ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.81μs 26.5ns 103ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 11.9ns 46.2ns 0.495 0 0 3.18 KB
#7791 SendAsync net6.0 6.9μs 6.84ns 25.6ns 0 0 0 2.36 KB
#7791 SendAsync netcoreapp3.1 8.59μs 26.4ns 98.9ns 0 0 0 2.9 KB
#7791 SendAsync net472 12.2μs 13.7ns 52.9ns 0.485 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 42.64 KB 86.24 KB 43.6 KB 102.25%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 261.47 KB 277.47 KB 16 KB 6.12%

Fewer allocations 🎉 in #7791

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 282.21 KB 278.53 KB -3.68 KB -1.30%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 44.43 KB 43.78 KB -656 B -1.48%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 272.87 KB 255.25 KB -17.62 KB -6.46%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 65.54 KB 57.34 KB -8.19 KB -12.50%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 43.9μs 240ns 1.25μs 0 0 0 44.43 KB
master StringConcatBenchmark netcoreapp3.1 47.2μs 262ns 1.57μs 0 0 0 42.64 KB
master StringConcatBenchmark net472 56.9μs 137ns 493ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 471μs 1.48μs 5.33μs 0 0 0 261.47 KB
master StringConcatAspectBenchmark netcoreapp3.1 524μs 914ns 3.16μs 0 0 0 272.87 KB
master StringConcatAspectBenchmark net472 411μs 2.34μs 16.6μs 0 0 0 282.21 KB
#7791 StringConcatBenchmark net6.0 41.8μs 234ns 1.69μs 0 0 0 43.78 KB
#7791 StringConcatBenchmark netcoreapp3.1 49.6μs 291ns 2.41μs 0 0 0 86.24 KB
#7791 StringConcatBenchmark net472 57.3μs 288ns 1.32μs 0 0 0 57.34 KB
#7791 StringConcatAspectBenchmark net6.0 483μs 2.29μs 8.87μs 0 0 0 277.47 KB
#7791 StringConcatAspectBenchmark netcoreapp3.1 490μs 1.98μs 6.87μs 0 0 0 255.25 KB
#7791 StringConcatAspectBenchmark net472 403μs 1.46μs 5.45μs 0 0 0 278.53 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.63μs 12.2ns 45.8ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.76μs 13.5ns 52.2ns 0 0 0 1.7 KB
master EnrichedLog net472 3.85μs 4.39ns 17ns 0.25 0 0 1.64 KB
#7791 EnrichedLog net6.0 2.8μs 13.2ns 52.8ns 0 0 0 1.7 KB
#7791 EnrichedLog netcoreapp3.1 3.63μs 11.4ns 42.8ns 0 0 0 1.7 KB
#7791 EnrichedLog net472 3.99μs 3.32ns 12.9ns 0.259 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 125μs 380ns 1.42μs 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 132μs 284ns 1.1μs 0 0 0 4.31 KB
master EnrichedLog net472 174μs 203ns 786ns 0 0 0 4.52 KB
#7791 EnrichedLog net6.0 123μs 215ns 776ns 0 0 0 4.31 KB
#7791 EnrichedLog netcoreapp3.1 126μs 195ns 705ns 0 0 0 4.31 KB
#7791 EnrichedLog net472 166μs 32.6ns 122ns 0 0 0 4.51 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.1μs 3.7ns 13.8ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.77μs 6.86ns 25.7ns 0 0 0 2.26 KB
master EnrichedLog net472 7.46μs 9.23ns 35.7ns 0.296 0 0 2.08 KB
#7791 EnrichedLog net6.0 5.11μs 5.23ns 20.2ns 0 0 0 2.26 KB
#7791 EnrichedLog netcoreapp3.1 6.98μs 17.7ns 68.4ns 0 0 0 2.26 KB
#7791 EnrichedLog net472 7.57μs 7.52ns 29.1ns 0.299 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.02μs 9.03ns 35ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.58μs 8.73ns 33.8ns 0 0 0 1.2 KB
master SendReceive net472 3.01μs 1.76ns 6.83ns 0.18 0 0 1.2 KB
#7791 SendReceive net6.0 1.95μs 9.3ns 37.2ns 0 0 0 1.2 KB
#7791 SendReceive netcoreapp3.1 2.6μs 12.4ns 48ns 0 0 0 1.2 KB
#7791 SendReceive net472 3.02μs 2.07ns 8.03ns 0.18 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.24μs 6.49ns 25.1ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.69μs 12ns 45ns 0 0 0 1.63 KB
master EnrichedLog net472 6.63μs 5.88ns 22ns 0.3 0 0 2.03 KB
#7791 EnrichedLog net6.0 4.21μs 4.59ns 17.8ns 0 0 0 1.58 KB
#7791 EnrichedLog netcoreapp3.1 5.59μs 5.95ns 23.1ns 0 0 0 1.63 KB
#7791 EnrichedLog net472 6.88μs 11.2ns 42ns 0.311 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 768ns 3.75ns 15ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 1μs 0.358ns 1.39ns 0 0 0 576 B
master StartFinishSpan net472 950ns 0.3ns 1.12ns 0.0902 0 0 578 B
master StartFinishScope net6.0 917ns 4.94ns 25.7ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.19μs 6.5ns 39ns 0 0 0 696 B
master StartFinishScope net472 1.15μs 0.488ns 1.89ns 0.104 0 0 658 B
#7791 StartFinishSpan net6.0 810ns 0.534ns 2.07ns 0 0 0 576 B
#7791 StartFinishSpan netcoreapp3.1 948ns 5.23ns 30.9ns 0 0 0 576 B
#7791 StartFinishSpan net472 930ns 0.522ns 2.02ns 0.0884 0 0 578 B
#7791 StartFinishScope net6.0 932ns 4.64ns 22.7ns 0 0 0 696 B
#7791 StartFinishScope netcoreapp3.1 1.21μs 5.78ns 23.1ns 0 0 0 696 B
#7791 StartFinishScope net472 1.12μs 0.785ns 3.04ns 0.101 0 0 658 B
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.08μs 0.711ns 2.66ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.42μs 7.38ns 35.4ns 0 0 0 697 B
master RunOnMethodBegin net472 1.47μs 0.948ns 3.42ns 0.103 0 0 658 B
#7791 RunOnMethodBegin net6.0 1.09μs 5.23ns 20.2ns 0 0 0 696 B
#7791 RunOnMethodBegin netcoreapp3.1 1.42μs 7.26ns 29.1ns 0 0 0 696 B
#7791 RunOnMethodBegin net472 1.45μs 0.904ns 3.5ns 0.102 0 0 658 B

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants