Skip to content

Conversation

@NachoEchevarria
Copy link
Collaborator

Summary of changes

We are getting the following error in master:

##[error][xUnit.net 00:00:14.01]     Datadog.Trace.Tools.dd_dotnet.ArtifactTests.RunCommandTests.RedirectInput [FAIL]
04:57:34 [ERR] [xUnit.net 00:00:14.01]     Datadog.Trace.Tools.dd_dotnet.ArtifactTests.RunCommandTests.RedirectInput [FAIL]
04:57:34 [DBG] [xUnit.net 00:00:14.30] Datadog.Trace.Tools.dd_dotnet.ArtifactTests: SUCCESS: Datadog.Trace.Tools.dd_dotnet.ArtifactTests.RunCommandTests.EmptyCommand() (0.3031637s)
04:57:34 [DBG] [xUnit.net 00:00:14.30] Datadog.Trace.Tools.dd_dotnet.ArtifactTests: STARTED: Datadog.Trace.Tools.dd_dotnet.ArtifactTests.RunCommandTests.Run()
04:57:35 [DBG]   Failed Datadog.Trace.Tools.dd_dotnet.ArtifactTests.RunCommandTests.RedirectInput [4 s]
04:57:35 [DBG]   Error Message:
04:57:35 [DBG]    System.InvalidOperationException : Cannot process request because the process (7424) has exited.
04:57:35 [DBG]   Stack Trace:
04:57:35 [DBG]      at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
04:57:35 [DBG]    at System.Diagnostics.Process.Kill()
04:57:35 [DBG]    at Datadog.Trace.Tools.dd_dotnet.ArtifactTests.RunCommandTests.RedirectInput() in D:\a\_work\1\s\tracer\test\Datadog.Trace.Tools.dd_dotnet.ArtifactTests\RunCommandTests.cs:line 103
04:57:35 [DBG]   Standard Output Messages:
04:57:35 [DBG]  Platform: X64
04:57:35 [DBG]  TargetPlatform: X64
04:57:35 [DBG]  Configuration: Release
04:57:35 [DBG]  TargetFramework: net48
04:57:35 [DBG]  .NET Core: False
04:57:35 [DBG]  Native Loader DLL: D:\a\_work\1\s\shared\bin\monitoring-home\win-x64\Datadog.Trace.ClrProfiler.Native.dll
04:57:35 [DBG]  D:\a\_work\1\s\shared\bin\monitoring-home\dd-dotnet.cmd run -- D:\a\_work\1\s\artifacts\bin\Samples.Console\release_net48\Samples.Console.exe  echo
04:57:35 [DBG] 

The CI failure was a race condition in the test cleanup code:

  • The test sends input and reads the echo response
  • The sample app exits after printing the echo (as designed)
  • The test tried to unconditionally kill the process
  • Sometimes the process had already exited before Kill() was called, causing InvalidOperationException

Thce fix:

  1. Added a check for !process.HasExited before attempting to kill the process
  2. Catch an InvalidOperationException for race conditions after testing process.HasExited
  3. Added process.Dispose() for proper resource cleanup
  4. Added a small delay after the echo in the sample app to avoid the sample program to finish before reading it's output

Reason for change

Implementation details

Test coverage

Other details

@github-actions github-actions bot added the area:tests unit tests, integration tests label Nov 4, 2025
@dd-trace-dotnet-ci-bot
Copy link

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7771) 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
duration69.25 ± (69.23 - 69.50) ms72.34 ± (72.42 - 73.06) ms+4.5%✅⬆️
.NET Framework 4.8 - Bailout
duration73.35 ± (73.25 - 73.52) ms76.20 ± (76.08 - 76.45) ms+3.9%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1054.10 ± (1055.85 - 1063.04) ms1077.42 ± (1082.46 - 1092.84) ms+2.2%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.13 ± (22.10 - 22.16) ms23.35 ± (23.22 - 23.47) ms+5.5%✅⬆️
process.time_to_main_ms80.53 ± (80.36 - 80.70) ms89.00 ± (88.51 - 89.49) ms+10.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.90 ± (10.89 - 10.90) MB10.89 ± (10.89 - 10.89) MB-0.1%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.10 ± (22.07 - 22.13) ms22.79 ± (22.74 - 22.84) ms+3.1%✅⬆️
process.time_to_main_ms81.57 ± (81.42 - 81.72) ms88.07 ± (87.82 - 88.32) ms+8.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.91 - 10.92) MB10.93 ± (10.93 - 10.94) MB+0.2%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms212.55 ± (211.18 - 213.93) ms221.90 ± (220.58 - 223.22) ms+4.4%✅⬆️
process.time_to_main_ms519.81 ± (519.07 - 520.55) ms554.86 ± (553.60 - 556.12) ms+6.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.73 ± (52.71 - 52.75) MB52.45 ± (52.43 - 52.47) MB-0.5%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.5%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms20.99 ± (20.96 - 21.02) ms21.58 ± (21.53 - 21.63) ms+2.8%✅⬆️
process.time_to_main_ms69.62 ± (69.49 - 69.76) ms73.97 ± (73.72 - 74.22) ms+6.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.59 ± (10.59 - 10.60) MB10.61 ± (10.60 - 10.61) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms20.98 ± (20.95 - 21.01) ms21.63 ± (21.57 - 21.69) ms+3.1%✅⬆️
process.time_to_main_ms70.51 ± (70.42 - 70.60) ms75.34 ± (75.10 - 75.59) ms+6.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.63 ± (10.63 - 10.64) MB10.65 ± (10.65 - 10.65) MB+0.1%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms201.02 ± (198.77 - 203.27) ms209.29 ± (207.70 - 210.87) ms+4.1%✅⬆️
process.time_to_main_ms490.32 ± (489.65 - 490.98) ms511.20 ± (509.84 - 512.56) ms+4.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.73 ± (51.67 - 51.79) MB51.60 ± (51.58 - 51.63) MB-0.2%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.10 ± (19.06 - 19.13) ms19.55 ± (19.51 - 19.59) ms+2.4%✅⬆️
process.time_to_main_ms69.83 ± (69.68 - 69.98) ms72.73 ± (72.53 - 72.93) ms+4.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.63 ± (7.62 - 7.63) MB7.63 ± (7.62 - 7.63) MB-0.0%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.12 ± (19.09 - 19.15) ms19.50 ± (19.46 - 19.54) ms+2.0%✅⬆️
process.time_to_main_ms70.85 ± (70.76 - 70.95) ms73.78 ± (73.60 - 73.95) ms+4.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.67 ± (7.66 - 7.68) MB7.69 ± (7.68 - 7.69) MB+0.2%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms179.07 ± (178.18 - 179.97) ms186.05 ± (185.17 - 186.93) ms+3.9%✅⬆️
process.time_to_main_ms464.04 ± (463.51 - 464.56) ms472.16 ± (470.94 - 473.37) ms+1.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed38.88 ± (38.85 - 38.91) MB38.70 ± (38.67 - 38.74) MB-0.5%
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)-0.4%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration193.59 ± (193.36 - 194.28) ms193.95 ± (193.56 - 194.42) ms+0.2%✅⬆️
.NET Framework 4.8 - Bailout
duration195.88 ± (195.78 - 196.32) ms196.87 ± (196.75 - 197.68) ms+0.5%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1163.32 ± (1167.79 - 1177.12) ms1179.82 ± (1180.78 - 1190.79) ms+1.4%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms187.88 ± (187.54 - 188.21) ms190.48 ± (190.04 - 190.91) ms+1.4%✅⬆️
process.time_to_main_ms81.09 ± (80.88 - 81.30) ms82.05 ± (81.82 - 82.28) ms+1.2%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.10 ± (16.07 - 16.13) MB15.99 ± (15.98 - 16.01) MB-0.6%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.6%
.NET Core 3.1 - Bailout
process.internal_duration_ms188.04 ± (187.55 - 188.52) ms190.50 ± (190.01 - 190.98) ms+1.3%✅⬆️
process.time_to_main_ms82.85 ± (82.66 - 83.05) ms83.40 ± (83.20 - 83.60) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.13 ± (16.11 - 16.16) MB16.08 ± (16.06 - 16.10) MB-0.3%
runtime.dotnet.threads.count21 ± (20 - 21)21 ± (21 - 21)+0.3%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms396.38 ± (393.98 - 398.77) ms402.66 ± (399.65 - 405.67) ms+1.6%✅⬆️
process.time_to_main_ms518.75 ± (518.11 - 519.40) ms521.71 ± (520.81 - 522.61) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed63.17 ± (63.02 - 63.32) MB63.29 ± (63.15 - 63.42) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms191.08 ± (190.81 - 191.35) ms194.72 ± (194.08 - 195.35) ms+1.9%✅⬆️
process.time_to_main_ms69.75 ± (69.60 - 69.90) ms71.15 ± (70.87 - 71.43) ms+2.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.18 ± (16.06 - 16.30) MB16.23 ± (16.18 - 16.29) MB+0.3%✅⬆️
runtime.dotnet.threads.count19 ± (18 - 19)19 ± (19 - 19)+1.2%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms190.82 ± (190.53 - 191.11) ms193.89 ± (193.43 - 194.34) ms+1.6%✅⬆️
process.time_to_main_ms70.79 ± (70.70 - 70.88) ms71.74 ± (71.56 - 71.92) ms+1.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.08 ± (15.93 - 16.23) MB16.36 ± (16.34 - 16.38) MB+1.8%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 20)20 ± (20 - 20)+4.1%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms410.37 ± (407.60 - 413.14) ms417.31 ± (413.89 - 420.72) ms+1.7%✅⬆️
process.time_to_main_ms488.80 ± (488.18 - 489.42) ms487.30 ± (486.55 - 488.05) ms-0.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.43 ± (62.29 - 62.58) MB62.30 ± (62.16 - 62.44) MB-0.2%
runtime.dotnet.threads.count29 ± (29 - 29)30 ± (29 - 30)+0.2%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms189.39 ± (189.16 - 189.63) ms190.54 ± (190.21 - 190.86) ms+0.6%✅⬆️
process.time_to_main_ms69.50 ± (69.35 - 69.66) ms69.88 ± (69.66 - 70.10) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.79 ± (11.77 - 11.82) MB11.73 ± (11.70 - 11.75) MB-0.6%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.3%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms188.94 ± (188.74 - 189.13) ms189.49 ± (189.14 - 189.83) ms+0.3%✅⬆️
process.time_to_main_ms70.43 ± (70.33 - 70.52) ms70.88 ± (70.73 - 71.02) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.88 ± (11.85 - 11.91) MB11.78 ± (11.71 - 11.85) MB-0.9%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.1%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms362.13 ± (360.41 - 363.84) ms361.95 ± (360.41 - 363.49) ms-0.0%
process.time_to_main_ms465.85 ± (465.05 - 466.65) ms460.01 ± (459.39 - 460.62) ms-1.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.54 ± (50.50 - 50.58) MB50.29 ± (50.25 - 50.33) MB-0.5%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.1%
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 (7771) - mean (73ms)  : 68, 77
    master - mean (69ms)  : 68, 71

    section Bailout
    This PR (7771) - mean (76ms)  : 74, 78
    master - mean (73ms)  : 72, 75

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (1,088ms)  : 1014, 1162
    master - mean (1,059ms)  : 1008, 1111

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 (7771) - mean (120ms)  : 110, 130
    master - mean (108ms)  : 105, 111

    section Bailout
    This PR (7771) - mean (118ms)  : crit, 113, 123
    master - mean (109ms)  : 107, 111

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (817ms)  : crit, 780, 855
    master - mean (764ms)  : 725, 802

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7771) - mean (102ms)  : 97, 107
    master - mean (96ms)  : 93, 98

    section Bailout
    This PR (7771) - mean (104ms)  : crit, 99, 108
    master - mean (97ms)  : 95, 98

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (763ms)  : 710, 815
    master - mean (722ms)  : 674, 770

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7771) - mean (100ms)  : 96, 104
    master - mean (96ms)  : 94, 98

    section Bailout
    This PR (7771) - mean (101ms)  : 97, 105
    master - mean (97ms)  : 95, 98

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (702ms)  : 668, 735
    master - mean (670ms)  : 655, 685

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 (7771) - mean (194ms)  : 189, 199
    master - mean (194ms)  : 189, 198

    section Bailout
    This PR (7771) - mean (197ms)  : 193, 202
    master - mean (196ms)  : 194, 199

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (1,186ms)  : 1113, 1258
    master - mean (1,172ms)  : 1104, 1241

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 (7771) - mean (281ms)  : 272, 290
    master - mean (278ms)  : 273, 283

    section Bailout
    This PR (7771) - mean (283ms)  : 274, 291
    master - mean (279ms)  : 272, 286

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (963ms)  : 924, 1003
    master - mean (955ms)  : 917, 993

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7771) - mean (274ms)  : 261, 287
    master - mean (269ms)  : 265, 273

    section Bailout
    This PR (7771) - mean (274ms)  : 263, 285
    master - mean (270ms)  : 266, 273

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (939ms)  : 879, 998
    master - mean (935ms)  : 893, 977

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

    section Bailout
    This PR (7771) - mean (270ms)  : 265, 274
    master - mean (269ms)  : 266, 272

    section CallTarget+Inlining+NGEN
    This PR (7771) - mean (854ms)  : 836, 871
    master - mean (860ms)  : 838, 882

Loading

@pr-commenter
Copy link

pr-commenter bot commented Nov 4, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7771 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.185
  • 1 benchmarks are slower, with geometric mean 2.493
  • 5 benchmarks have fewer allocations
  • 2 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 11.4μs 55ns 233ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 13.7μs 68.5ns 291ns 0 0 0 5.71 KB
master StartStopWithChild net472 21.9μs 114ns 591ns 0.883 0.221 0 6.05 KB
#7771 StartStopWithChild net6.0 10.6μs 57.7ns 346ns 0 0 0 5.52 KB
#7771 StartStopWithChild netcoreapp3.1 13.7μs 69.7ns 304ns 0 0 0 5.71 KB
#7771 StartStopWithChild net472 21.8μs 116ns 614ns 1 0.334 0.111 6.07 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 940μs 73.7ns 255ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.01ms 648ns 2.51μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 70.7ns 255ns 0 0 0 3.31 KB
#7771 WriteAndFlushEnrichedTraces net6.0 933μs 102ns 382ns 0 0 0 2.71 KB
#7771 WriteAndFlushEnrichedTraces netcoreapp3.1 1.04ms 162ns 628ns 0 0 0 2.7 KB
#7771 WriteAndFlushEnrichedTraces net472 1.22ms 244ns 946ns 0 0 0 3.31 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.07μs 5.75ns 29.9ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.41μs 7.61ns 43.1ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.326ns 1.22ns 0.194 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 6.97μs 36.9ns 202ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.08μs 41.6ns 167ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.58μs 3.67ns 14.2ns 0.719 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 317ns 1.7ns 9ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 396ns 2.25ns 15.3ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 300ns 0.064ns 0.24ns 0.0438 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.32μs 29.7ns 126ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.77μs 29.3ns 114ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.68μs 1.8ns 6.98ns 0.602 0 0 3.8 KB
#7771 AllCycleSimpleBody net6.0 1.06μs 5.88ns 38.1ns 0 0 0 1.22 KB
#7771 AllCycleSimpleBody netcoreapp3.1 1.41μs 1ns 3.62ns 0 0 0 1.2 KB
#7771 AllCycleSimpleBody net472 1.03μs 0.397ns 1.43ns 0.191 0 0 1.23 KB
#7771 AllCycleMoreComplexBody net6.0 7.5μs 39.3ns 201ns 0 0 0 4.72 KB
#7771 AllCycleMoreComplexBody netcoreapp3.1 8.89μs 31.1ns 120ns 0 0 0 4.62 KB
#7771 AllCycleMoreComplexBody net472 7.64μs 3.53ns 13.7ns 0.728 0 0 4.74 KB
#7771 ObjectExtractorSimpleBody net6.0 325ns 1.69ns 8.45ns 0 0 0 280 B
#7771 ObjectExtractorSimpleBody netcoreapp3.1 401ns 2.18ns 12.9ns 0 0 0 272 B
#7771 ObjectExtractorSimpleBody net472 307ns 0.0716ns 0.277ns 0.0433 0 0 281 B
#7771 ObjectExtractorMoreComplexBody net6.0 6.37μs 29ns 112ns 0 0 0 3.78 KB
#7771 ObjectExtractorMoreComplexBody netcoreapp3.1 7.81μs 26ns 101ns 0 0 0 3.69 KB
#7771 ObjectExtractorMoreComplexBody net472 6.76μs 5.14ns 19.9ns 0.571 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.9μs 168ns 652ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 96.7μs 280ns 1.05μs 0 0 0 32.4 KB
master EncodeArgs net472 112μs 15.4ns 59.7ns 5.02 0 0 32.5 KB
master EncodeLegacyArgs net6.0 144μs 47.8ns 179ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 199μs 189ns 732ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 262μs 150ns 583ns 0 0 0 2.16 KB
#7771 EncodeArgs net6.0 76.8μs 40.3ns 156ns 0 0 0 32.4 KB
#7771 EncodeArgs netcoreapp3.1 96.9μs 371ns 1.44μs 0 0 0 32.4 KB
#7771 EncodeArgs net472 110μs 55.7ns 216ns 4.94 0 0 32.5 KB
#7771 EncodeLegacyArgs net6.0 145μs 13.1ns 50.6ns 0 0 0 2.15 KB
#7771 EncodeLegacyArgs netcoreapp3.1 198μs 103ns 372ns 0 0 0 2.14 KB
#7771 EncodeLegacyArgs net472 263μs 126ns 470ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7771

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.493 296,601.22 739,445.76

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 396μs 89.2ns 345ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 411μs 163ns 586ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 429μs 90.6ns 351ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 295μs 84ns 314ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 297μs 106ns 409ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 314μs 25.1ns 93.8ns 0 0 0 2.29 KB
#7771 RunWafRealisticBenchmark net6.0 390μs 34.3ns 133ns 0 0 0 4.56 KB
#7771 RunWafRealisticBenchmark netcoreapp3.1 415μs 153ns 593ns 0 0 0 4.48 KB
#7771 RunWafRealisticBenchmark net472 437μs 54.1ns 209ns 0 0 0 4.66 KB
#7771 RunWafRealisticBenchmarkWithAttack net6.0 287μs 65.5ns 236ns 0 0 0 2.24 KB
#7771 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 716μs 6.75μs 67.5μs 0 0 0 2.22 KB
#7771 RunWafRealisticBenchmarkWithAttack net472 316μs 37.1ns 134ns 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 61.5μs 62.5ns 225ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 73.6μs 399ns 2.15μs 0 0 0 17.42 KB
master SendRequest net472 0.00285ns 0.00147ns 0.00569ns 0 0 0 0 b
#7771 SendRequest net6.0 60.8μs 41.4ns 160ns 0 0 0 14.52 KB
#7771 SendRequest netcoreapp3.1 71.1μs 96.7ns 349ns 0 0 0 17.42 KB
#7771 SendRequest net472 0.00306ns 0.00193ns 0.00746ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7771

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 85 B 73 B -12 B -14.12%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 4 B 3 B -1 B -25.00%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 1 B 0 b -1 B -100.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.95ms 169ns 654ns 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.11ms 2.98μs 10.8μs 0 0 0 640 KB
master OriginalCharSlice net472 2.69ms 176ns 681ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.41ms 551ns 2.13μs 0 0 0 2 B
master OptimizedCharSlice netcoreapp3.1 1.79ms 4.21μs 16.3μs 0 0 0 1 B
master OptimizedCharSlice net472 2.07ms 367ns 1.32μs 0 0 0 85 B
master OptimizedCharSliceWithPool net6.0 856μs 29ns 109ns 0 0 0 4 B
master OptimizedCharSliceWithPool netcoreapp3.1 801μs 71ns 275ns 0 0 0 1 B
master OptimizedCharSliceWithPool net472 1.18ms 110ns 427ns 0 0 0 48 B
#7771 OriginalCharSlice net6.0 1.91ms 4.14μs 15.5μs 0 0 0 640 KB
#7771 OriginalCharSlice netcoreapp3.1 2.11ms 5.34μs 20μs 0 0 0 640 KB
#7771 OriginalCharSlice net472 2.71ms 102ns 394ns 100 0 0 641.95 KB
#7771 OptimizedCharSlice net6.0 1.36ms 197ns 765ns 0 0 0 2 B
#7771 OptimizedCharSlice netcoreapp3.1 1.73ms 839ns 3.25μs 0 0 0 1 B
#7771 OptimizedCharSlice net472 1.94ms 287ns 1.11μs 0 0 0 73 B
#7771 OptimizedCharSliceWithPool net6.0 851μs 15.9ns 59.6ns 0 0 0 3 B
#7771 OptimizedCharSliceWithPool netcoreapp3.1 823μs 99.7ns 386ns 0 0 0 0 b
#7771 OptimizedCharSliceWithPool net472 1.16ms 53ns 198ns 0 0 0 48 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7771

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.204 747,365.42 620,831.88 bimodal

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 698μs 3.39μs 13.6μs 0 0 0 41.63 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 730μs 4.23μs 37.6μs 0 0 0 41.93 KB
master WriteAndFlushEnrichedTraces net472 884μs 4.04μs 15.6μs 8.33 0 0 56.12 KB
#7771 WriteAndFlushEnrichedTraces net6.0 680μs 282ns 1.09μs 0 0 0 41.67 KB
#7771 WriteAndFlushEnrichedTraces netcoreapp3.1 623μs 1.7μs 6.13μs 0 0 0 41.97 KB
#7771 WriteAndFlushEnrichedTraces net472 838μs 3.29μs 12.7μs 7.81 0 0 55.97 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 2μs 3.92ns 15.2ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.52μs 11.9ns 46.3ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.9μs 2ns 7.48ns 0.145 0.0145 0 987 B
#7771 ExecuteNonQuery net6.0 1.91μs 5.85ns 22.7ns 0 0 0 1.02 KB
#7771 ExecuteNonQuery netcoreapp3.1 2.59μs 9.81ns 36.7ns 0 0 0 1.02 KB
#7771 ExecuteNonQuery net472 2.87μs 2.09ns 8.1ns 0.144 0.0144 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 2.3ns 8.93ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.25μs 7.91ns 30.6ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.58μs 5.55ns 21.5ns 0.159 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.87μs 7.49ns 29ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.33μs 11ns 42.6ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.68μs 4.81ns 18.6ns 0.165 0 0 1.1 KB
#7771 CallElasticsearch net6.0 1.68μs 7.62ns 29.5ns 0 0 0 1.03 KB
#7771 CallElasticsearch netcoreapp3.1 2.22μs 10.4ns 43ns 0 0 0 1.03 KB
#7771 CallElasticsearch net472 3.76μs 1.81ns 7.03ns 0.15 0 0 1.04 KB
#7771 CallElasticsearchAsync net6.0 1.93μs 4.42ns 17.1ns 0 0 0 1.01 KB
#7771 CallElasticsearchAsync netcoreapp3.1 2.34μs 11.6ns 49.4ns 0 0 0 1.08 KB
#7771 CallElasticsearchAsync net472 3.72μs 1.11ns 4.02ns 0.168 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.85μs 3.74ns 14.5ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.36μs 8.18ns 30.6ns 0 0 0 952 B
master ExecuteAsync net472 2.54μs 1.53ns 5.92ns 0.141 0 0 915 B
#7771 ExecuteAsync net6.0 1.87μs 5.84ns 21.8ns 0 0 0 952 B
#7771 ExecuteAsync netcoreapp3.1 2.54μs 12.9ns 56.3ns 0 0 0 952 B
#7771 ExecuteAsync net472 2.54μs 0.916ns 3.55ns 0.14 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.86μs 7.22ns 27.9ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.6μs 18.5ns 71.7ns 0 0 0 2.9 KB
master SendAsync net472 12.1μs 8.1ns 31.4ns 0.484 0 0 3.18 KB
#7771 SendAsync net6.0 7.01μs 4.66ns 16.8ns 0 0 0 2.36 KB
#7771 SendAsync netcoreapp3.1 8.7μs 13ns 48.6ns 0 0 0 2.9 KB
#7771 SendAsync net472 12.6μs 16.4ns 63.6ns 0.501 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Faster 🎉 More allocations ⚠️

Faster 🎉 in #7771

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 1.167 512,950.00 439,700.00

More allocations ⚠️ in #7771

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.1 KB 45.32 KB 2.22 KB 5.14%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 272.36 KB 275.16 KB 2.8 KB 1.03%

Fewer allocations 🎉 in #7771

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 257.82 KB 248.54 KB -9.28 KB -3.60%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 46.1 KB 43.5 KB -2.6 KB -5.64%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 46.5μs 519ns 4.96μs 0 0 0 43.1 KB
master StringConcatBenchmark netcoreapp3.1 49.6μs 277ns 2.36μs 0 0 0 46.1 KB
master StringConcatBenchmark net472 58μs 146ns 545ns 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 514μs 1.64μs 5.68μs 0 0 0 257.82 KB
master StringConcatAspectBenchmark netcoreapp3.1 519μs 1.2μs 4.34μs 0 0 0 272.36 KB
master StringConcatAspectBenchmark net472 404μs 2μs 16.5μs 0 0 0 278.53 KB
#7771 StringConcatBenchmark net6.0 42.1μs 232ns 1.39μs 0 0 0 45.32 KB
#7771 StringConcatBenchmark netcoreapp3.1 46.4μs 232ns 1.01μs 0 0 0 43.5 KB
#7771 StringConcatBenchmark net472 57.8μs 175ns 654ns 0 0 0 57.34 KB
#7771 StringConcatAspectBenchmark net6.0 440μs 1.3μs 4.69μs 0 0 0 248.54 KB
#7771 StringConcatAspectBenchmark netcoreapp3.1 523μs 2.44μs 9.78μs 0 0 0 275.16 KB
#7771 StringConcatAspectBenchmark net472 400μs 2.28μs 17.1μ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.4ns 49.7ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.62μs 16.7ns 64.5ns 0 0 0 1.7 KB
master EnrichedLog net472 4.12μs 4.34ns 16.8ns 0.244 0 0 1.64 KB
#7771 EnrichedLog net6.0 2.76μs 2.64ns 10.2ns 0 0 0 1.7 KB
#7771 EnrichedLog netcoreapp3.1 3.61μs 18.6ns 83.2ns 0 0 0 1.7 KB
#7771 EnrichedLog net472 4μs 4.87ns 18.8ns 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 127μs 257ns 890ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 133μs 165ns 596ns 0 0 0 4.31 KB
master EnrichedLog net472 173μs 284ns 1.1μs 0 0 0 4.52 KB
#7771 EnrichedLog net6.0 125μs 97.2ns 364ns 0 0 0 4.31 KB
#7771 EnrichedLog netcoreapp3.1 131μs 197ns 762ns 0 0 0 4.31 KB
#7771 EnrichedLog net472 171μs 184ns 713ns 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.13μs 17.6ns 68.1ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.75μs 15.4ns 59.5ns 0 0 0 2.26 KB
master EnrichedLog net472 7.51μs 8.31ns 32.2ns 0.3 0 0 2.08 KB
#7771 EnrichedLog net6.0 5.03μs 4.87ns 18.2ns 0 0 0 2.26 KB
#7771 EnrichedLog netcoreapp3.1 7.07μs 14.9ns 57.6ns 0 0 0 2.26 KB
#7771 EnrichedLog net472 7.52μs 6.89ns 26.7ns 0.301 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 1.98μs 0.673ns 2.61ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.65μs 11.8ns 45.6ns 0 0 0 1.2 KB
master SendReceive net472 3.15μs 6.36ns 24.6ns 0.187 0 0 1.2 KB
#7771 SendReceive net6.0 2.03μs 1.09ns 4.24ns 0 0 0 1.2 KB
#7771 SendReceive netcoreapp3.1 2.71μs 12.9ns 50ns 0 0 0 1.2 KB
#7771 SendReceive net472 3.09μs 1.38ns 5.36ns 0.187 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.21μs 2.86ns 11.1ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.49μs 16.8ns 65ns 0 0 0 1.63 KB
master EnrichedLog net472 6.45μs 7.3ns 28.3ns 0.292 0 0 2.03 KB
#7771 EnrichedLog net6.0 4.22μs 4.76ns 17.2ns 0 0 0 1.58 KB
#7771 EnrichedLog netcoreapp3.1 5.64μs 19.1ns 74.1ns 0 0 0 1.63 KB
#7771 EnrichedLog net472 6.56μs 6.6ns 24.7ns 0.295 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 790ns 4.27ns 22.2ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 965ns 5.37ns 32.7ns 0 0 0 576 B
master StartFinishSpan net472 921ns 0.498ns 1.93ns 0.088 0 0 578 B
master StartFinishScope net6.0 924ns 4.61ns 20.1ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.18μs 6.09ns 30.5ns 0 0 0 696 B
master StartFinishScope net472 1.12μs 0.542ns 2.1ns 0.1 0 0 658 B
#7771 StartFinishSpan net6.0 809ns 0.496ns 1.79ns 0 0 0 576 B
#7771 StartFinishSpan netcoreapp3.1 967ns 4.61ns 17.9ns 0 0 0 576 B
#7771 StartFinishSpan net472 934ns 0.951ns 3.68ns 0.089 0 0 578 B
#7771 StartFinishScope net6.0 922ns 4.7ns 21.5ns 0 0 0 696 B
#7771 StartFinishScope netcoreapp3.1 1.21μs 5.17ns 20ns 0 0 0 696 B
#7771 StartFinishScope net472 1.13μs 0.644ns 2.49ns 0.102 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.11μs 1.63ns 6.32ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.45μs 5ns 18.7ns 0 0 0 696 B
master RunOnMethodBegin net472 1.47μs 1.06ns 4.1ns 0.102 0 0 658 B
#7771 RunOnMethodBegin net6.0 1.06μs 5.06ns 20.9ns 0 0 0 696 B
#7771 RunOnMethodBegin netcoreapp3.1 1.45μs 6.4ns 24.8ns 0 0 0 696 B
#7771 RunOnMethodBegin net472 1.46μs 1.55ns 5.8ns 0.105 0 0 658 B

@NachoEchevarria NachoEchevarria marked this pull request as ready for review November 4, 2025 15:29
@NachoEchevarria NachoEchevarria requested review from a team as code owners November 4, 2025 15:29
Copy link
Member

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

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

Thanks!

Comment on lines 120 to 121
// Small delay to ensure the test has time to read the output before the process exits
Thread.Sleep(100);
Copy link
Member

Choose a reason for hiding this comment

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

nit: I don't think we should add this, it just slows down dozens of tests without any real benefit IMO

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I was not sure about it. It's a safety measure but it will also affect performance. I will remove it and if we see any case where the console app ends before the test is actually being able to read the output from it, we can add it.

@NachoEchevarria NachoEchevarria merged commit 9b0bc10 into master Nov 5, 2025
152 checks passed
@NachoEchevarria NachoEchevarria deleted the nacho/FixRunCommandTest branch November 5, 2025 14:44
@github-actions github-actions bot added this to the vNext-v3 milestone Nov 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:tests unit tests, integration tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants