dd-trace-dotnet icon indicating copy to clipboard operation
dd-trace-dotnet copied to clipboard

[Profiler] Detect unhandled exceptions

Open chrisnas opened this issue 7 months ago • 4 comments

Summary of changes

Detect unhandled exception before the application crashes

Reason for change

Interesting feature either for crash tracking or simply creating a dedicated sample for these killer exceptions

Implementation details

  1. store exception received in ExceptionThrown in the current thread
  2. clear exception in ExceptionSearchCatcherFound for the current thread
  3. if, in ExceptionUnwindFunctionLeave the current thread still has an exception, this is the killer one

Test coverage

Other details

chrisnas avatar Apr 18 '25 16:04 chrisnas

Datadog Report

All test runs c6749f1 :link:

:x: 2 Total Test Services: 1 Failed, 1 Passed :hourglass: 1 with Regressions

Test Services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Performance Regressions Test Service View
dd-trace-dotnet 10 0 0 251320 2547 19h 4m 53.51s 2 Link
exploration_tests 0 0 0 22085 3 2m 13.32s 0 Link

:x: Failed Tests (10)

This report shows up to 5 failed tests.

  • DetectUnhandledException - Datadog.Profiler.IntegrationTests.Exceptions.ExceptionsTest - Details

    Expand for error
    
    ctual:   Falseilure
    
  • DetectUnhandledException - Datadog.Profiler.IntegrationTests.Exceptions.ExceptionsTest - Details

    Expand for error
    
    ctual:   Falseilure
    
  • DetectUnhandledException - Datadog.Profiler.IntegrationTests.Exceptions.ExceptionsTest - Details

    Expand for error
    
    ctual:   Falseilure
    
  • DetectUnhandledException - Datadog.Profiler.IntegrationTests.Exceptions.ExceptionsTest - Details

    Expand for error
    
    ctual:   Falseilure
    
  • DetectUnhandledException - Datadog.Profiler.IntegrationTests.Exceptions.ExceptionsTest - Details

    Expand for error
    
    ctual:   Falseilure
    

:hourglass: Performance Regressions vs Default Branch (2)

  • WriteAndFlushEnrichedTraces - Benchmarks.Trace.AgentWriterBenchmark 1.05ms (+542.28µs, +106%) - Details
  • EnrichedLog - Benchmarks.Trace.Log4netBenchmark 157.13µs (+6.62µs, +4%) - Details

Benchmarks

Benchmarks Report for tracer :snail:

Benchmarks for #6873 compared to master:

  • All benchmarks have the same speed
  • 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 :heavy_check_mark: More allocations :warning:

More allocations :warning: in #6873

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.13 KB 6.17 KB 36 B 0.59%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.9μs 57.5ns 288ns 0 0 0 5.55 KB
master StartStopWithChild netcoreapp3.1 13.3μs 33.9ns 131ns 0 0 0 5.77 KB
master StartStopWithChild net472 21.9μs 110ns 563ns 1.03 0.343 0.114 6.13 KB
#6873 StartStopWithChild net6.0 10.2μs 57.7ns 392ns 0 0 0 5.56 KB
#6873 StartStopWithChild netcoreapp3.1 12.9μs 64.8ns 282ns 0 0 0 5.76 KB
#6873 StartStopWithChild net472 22.3μs 119ns 674ns 1.07 0.322 0.107 6.17 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #6873

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 3.31 KB 3.33 KB 23 B 0.70%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 933μs 89.9ns 311ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 1.28μs 4.96μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.22ms 109ns 422ns 0 0 0 3.31 KB
#6873 WriteAndFlushEnrichedTraces net6.0 924μs 65.7ns 228ns 0 0 0 2.71 KB
#6873 WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 1.31μs 5.06μs 0 0 0 2.7 KB
#6873 WriteAndFlushEnrichedTraces net472 1.24ms 43.4ns 157ns 0 0 0 3.33 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61.2μs 81.2ns 315ns 0 0 0 14.53 KB
master SendRequest netcoreapp3.1 71.5μs 387ns 2.05μs 0 0 0 17.42 KB
master SendRequest net472 0.0103ns 0.00308ns 0.0119ns 0 0 0 0 b
#6873 SendRequest net6.0 60.9μs 42.8ns 166ns 0 0 0 14.53 KB
#6873 SendRequest netcoreapp3.1 70.4μs 119ns 447ns 0 0 0 17.43 KB
#6873 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 677μs 711ns 2.66μs 0 0 0 41.92 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 661μs 2.42μs 9.38μs 0 0 0 41.94 KB
master WriteAndFlushEnrichedTraces net472 898μs 2.72μs 10.5μs 8.33 0 0 56.05 KB
#6873 WriteAndFlushEnrichedTraces net6.0 665μs 642ns 2.4μs 0 0 0 41.96 KB
#6873 WriteAndFlushEnrichedTraces netcoreapp3.1 657μs 2.12μs 8.23μs 0 0 0 42.01 KB
#6873 WriteAndFlushEnrichedTraces net472 914μs 3.36μs 13μs 8.33 0 0 56.25 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.96μs 2.68ns 9.29ns 0 0 0 1.03 KB
master ExecuteNonQuery netcoreapp3.1 2.55μs 7.62ns 27.5ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.79μs 3.98ns 15.4ns 0.154 0.014 0 995 B
#6873 ExecuteNonQuery net6.0 1.97μs 9.54ns 39.4ns 0 0 0 1.03 KB
#6873 ExecuteNonQuery netcoreapp3.1 2.52μs 9.98ns 38.7ns 0 0 0 1.02 KB
#6873 ExecuteNonQuery net472 2.83μs 6.96ns 27ns 0.154 0.014 0 995 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.79μs 6.88ns 26.7ns 0 0 0 1.04 KB
master CallElasticsearch netcoreapp3.1 2.19μs 10.4ns 42.8ns 0 0 0 1.04 KB
master CallElasticsearch net472 3.49μs 2.29ns 8.86ns 0.157 0 0 1.05 KB
master CallElasticsearchAsync net6.0 1.84μs 7.94ns 30.8ns 0 0 0 1.02 KB
master CallElasticsearchAsync netcoreapp3.1 2.48μs 7.82ns 29.3ns 0 0 0 1.09 KB
master CallElasticsearchAsync net472 3.55μs 1.16ns 4.48ns 0.16 0 0 1.11 KB
#6873 CallElasticsearch net6.0 1.8μs 5.75ns 21.5ns 0 0 0 1.04 KB
#6873 CallElasticsearch netcoreapp3.1 2.35μs 11ns 42.6ns 0 0 0 1.04 KB
#6873 CallElasticsearch net472 3.51μs 3.44ns 13.3ns 0.158 0 0 1.05 KB
#6873 CallElasticsearchAsync net6.0 1.87μs 2.19ns 8.5ns 0 0 0 1.02 KB
#6873 CallElasticsearchAsync netcoreapp3.1 2.37μs 9.96ns 38.6ns 0 0 0 1.09 KB
#6873 CallElasticsearchAsync net472 3.62μs 0.961ns 3.33ns 0.163 0 0 1.11 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.81μs 0.676ns 2.44ns 0 0 0 960 B
master ExecuteAsync netcoreapp3.1 2.26μs 2.5ns 9.01ns 0 0 0 960 B
master ExecuteAsync net472 2.74μs 0.447ns 1.73ns 0.137 0 0 923 B
#6873 ExecuteAsync net6.0 1.81μs 3.9ns 15.1ns 0 0 0 960 B
#6873 ExecuteAsync netcoreapp3.1 2.34μs 10ns 38.7ns 0 0 0 960 B
#6873 ExecuteAsync net472 2.57μs 1.26ns 4.72ns 0.142 0 0 923 B
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.99μs 10.6ns 39.6ns 0 0 0 2.37 KB
master SendAsync netcoreapp3.1 8.74μs 15.8ns 61.1ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 9.95ns 38.5ns 0.492 0 0 3.19 KB
#6873 SendAsync net6.0 6.83μs 8.59ns 32.1ns 0 0 0 2.37 KB
#6873 SendAsync netcoreapp3.1 8.28μs 25.9ns 93.4ns 0 0 0 2.9 KB
#6873 SendAsync net472 12.4μs 7.08ns 26.5ns 0.498 0 0 3.19 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.62μs 1.06ns 4.09ns 0 0 0 1.76 KB
master EnrichedLog netcoreapp3.1 3.56μs 2.79ns 10.8ns 0 0 0 1.76 KB
master EnrichedLog net472 3.94μs 3.38ns 12.6ns 0.256 0 0 1.69 KB
#6873 EnrichedLog net6.0 2.63μs 1.81ns 6.77ns 0 0 0 1.76 KB
#6873 EnrichedLog netcoreapp3.1 3.49μs 8.67ns 33.6ns 0 0 0 1.76 KB
#6873 EnrichedLog net472 3.83μs 2.99ns 11.6ns 0.25 0 0 1.69 KB
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 124μs 169ns 653ns 0 0 0 4.37 KB
master EnrichedLog netcoreapp3.1 130μs 360ns 1.35μs 0 0 0 4.37 KB
master EnrichedLog net472 167μs 196ns 708ns 0 0 0 4.57 KB
#6873 EnrichedLog net6.0 123μs 58.8ns 220ns 0 0 0 4.37 KB
#6873 EnrichedLog netcoreapp3.1 127μs 181ns 701ns 0 0 0 4.37 KB
#6873 EnrichedLog net472 166μs 30.7ns 115ns 0 0 0 4.57 KB
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5μs 6.37ns 23.8ns 0 0 0 2.32 KB
master EnrichedLog netcoreapp3.1 6.65μs 11.5ns 44.4ns 0 0 0 2.32 KB
master EnrichedLog net472 7.5μs 8.28ns 32.1ns 0.337 0 0 2.14 KB
#6873 EnrichedLog net6.0 5.04μs 17.5ns 67.6ns 0 0 0 2.32 KB
#6873 EnrichedLog netcoreapp3.1 6.6μs 20.3ns 78.6ns 0 0 0 2.32 KB
#6873 EnrichedLog net472 7.35μs 7.51ns 29.1ns 0.331 0 0 2.14 KB
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 2.01μs 2.66ns 10.3ns 0 0 0 1.21 KB
master SendReceive netcoreapp3.1 2.57μs 11.6ns 44.7ns 0 0 0 1.21 KB
master SendReceive net472 3.24μs 1.79ns 6.44ns 0.178 0 0 1.21 KB
#6873 SendReceive net6.0 2.05μs 9.76ns 37.8ns 0 0 0 1.21 KB
#6873 SendReceive netcoreapp3.1 2.63μs 12.5ns 50.2ns 0 0 0 1.21 KB
#6873 SendReceive net472 3.05μs 2.69ns 10.4ns 0.185 0 0 1.21 KB
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.08μs 7.17ns 26.8ns 0 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 5.64μs 17.9ns 69.4ns 0 0 0 1.69 KB
master EnrichedLog net472 6.82μs 5.28ns 20.4ns 0.306 0 0 2.08 KB
#6873 EnrichedLog net6.0 4.1μs 18.4ns 71.1ns 0 0 0 1.64 KB
#6873 EnrichedLog netcoreapp3.1 5.72μs 10.9ns 40.8ns 0 0 0 1.69 KB
#6873 EnrichedLog net472 6.61μs 6.39ns 23.9ns 0.328 0 0 2.08 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 746ns 3.82ns 17.1ns 0 0 0 584 B
master StartFinishSpan netcoreapp3.1 943ns 4.6ns 18.4ns 0 0 0 584 B
master StartFinishSpan net472 938ns 0.188ns 0.704ns 0.0884 0 0 586 B
master StartFinishScope net6.0 895ns 4.63ns 20.2ns 0 0 0 704 B
master StartFinishScope netcoreapp3.1 1.14μs 1.48ns 5.74ns 0 0 0 704 B
master StartFinishScope net472 1.1μs 0.322ns 1.16ns 0.105 0 0 666 B
#6873 StartFinishSpan net6.0 775ns 3.68ns 13.8ns 0 0 0 584 B
#6873 StartFinishSpan netcoreapp3.1 945ns 4.62ns 18.5ns 0 0 0 584 B
#6873 StartFinishSpan net472 943ns 0.417ns 1.62ns 0.0887 0 0 586 B
#6873 StartFinishScope net6.0 910ns 0.449ns 1.74ns 0 0 0 704 B
#6873 StartFinishScope netcoreapp3.1 1.15μs 6.39ns 37.8ns 0 0 0 704 B
#6873 StartFinishScope net472 1.12μs 0.122ns 0.456ns 0.105 0 0 666 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.02μs 5.3ns 25.4ns 0 0 0 705 B
master RunOnMethodBegin netcoreapp3.1 1.36μs 6.63ns 27.3ns 0 0 0 704 B
master RunOnMethodBegin net472 1.44μs 2.33ns 9.01ns 0.1 0 0 666 B
#6873 RunOnMethodBegin net6.0 1.03μs 5.13ns 21.1ns 0 0 0 704 B
#6873 RunOnMethodBegin netcoreapp3.1 1.4μs 7.06ns 32.3ns 0 0 0 704 B
#6873 RunOnMethodBegin net472 1.34μs 0.639ns 2.39ns 0.102 0 0 666 B

pr-commenter[bot] avatar Apr 18 '25 17:04 pr-commenter[bot]

Execution-Time Benchmarks Report :stopwatch:

Execution-time results for samples comparing the following branches/commits:

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 shown 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).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6873) - mean (69ms)  : 67, 71
     .   : milestone, 69,
    master - mean (69ms)  : 66, 72
     .   : milestone, 69,

    section CallTarget+Inlining+NGEN
    This PR (6873) - mean (1,010ms)  : 985, 1035
     .   : milestone, 1010,
    master - mean (1,007ms)  : 987, 1027
     .   : milestone, 1007,

gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6873) - mean (103ms)  : 99, 106
     .   : milestone, 103,
    master - mean (102ms)  : 100, 104
     .   : milestone, 102,

    section CallTarget+Inlining+NGEN
    This PR (6873) - mean (696ms)  : 669, 723
     .   : milestone, 696,
    master - mean (694ms)  : 671, 717
     .   : milestone, 694,

gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6873) - mean (89ms)  : 88, 91
     .   : milestone, 89,
    master - mean (89ms)  : 87, 91
     .   : milestone, 89,

    section CallTarget+Inlining+NGEN
    This PR (6873) - mean (657ms)  : 640, 673
     .   : milestone, 657,
    master - mean (657ms)  : 632, 683
     .   : milestone, 657,

gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6873) - mean (190ms)  : 186, 195
     .   : milestone, 190,
    master - mean (189ms)  : 186, 193
     .   : milestone, 189,

    section CallTarget+Inlining+NGEN
    This PR (6873) - mean (1,111ms)  : 1086, 1136
     .   : milestone, 1111,
    master - mean (1,104ms)  : 1075, 1133
     .   : milestone, 1104,

gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6873) - mean (270ms)  : 265, 275
     .   : milestone, 270,
    master - mean (268ms)  : 264, 272
     .   : milestone, 268,

    section CallTarget+Inlining+NGEN
    This PR (6873) - mean (885ms)  : 857, 913
     .   : milestone, 885,
    master - mean (882ms)  : 854, 910
     .   : milestone, 882,

gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6873) - mean (262ms)  : 257, 266
     .   : milestone, 262,
    master - mean (260ms)  : 257, 264
     .   : milestone, 260,

    section CallTarget+Inlining+NGEN
    This PR (6873) - mean (873ms)  : 841, 905
     .   : milestone, 873,
    master - mean (870ms)  : 842, 899
     .   : milestone, 870,

andrewlock avatar Apr 18 '25 17:04 andrewlock

Benchmarks Report for tracer :snail:

Benchmarks for #6873 compared to master:

  • 2 benchmarks are slower, with geometric mean 1.548
  • All benchmarks have the same 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 :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 7.74μs 90.1ns 896ns 0 0 0 5.57 KB
master StartStopWithChild netcoreapp3.1 10.1μs 148ns 1.48μs 0 0 0 5.73 KB
master StartStopWithChild net472 15.3μs 87.8ns 697ns 1.04 0.297 0.0741 6.13 KB
#6873 StartStopWithChild net6.0 7.76μs 111ns 1.11μs 0 0 0 5.57 KB
#6873 StartStopWithChild netcoreapp3.1 10.4μs 111ns 1.09μs 0 0 0 5.76 KB
#6873 StartStopWithChild net472 14.9μs 80.9ns 436ns 0.958 0.239 0 6.12 KB
Benchmarks.Trace.AgentWriterBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #6873

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 2.133 492,921.09 1,051,378.65

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 513μs 5.69μs 50.6μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 664μs 854ns 3.19μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 841μs 2.7μs 10.1μs 0 0 0 3.31 KB
#6873 WriteAndFlushEnrichedTraces net6.0 1.05ms 5.53μs 27.6μs 0 0 0 2.71 KB
#6873 WriteAndFlushEnrichedTraces netcoreapp3.1 668μs 2.95μs 11.1μs 0 0 0 2.7 KB
#6873 WriteAndFlushEnrichedTraces net472 863μs 371ns 1.44μs 0 0 0 3.31 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 127μs 626ns 2.66μs 0 0 0 14.48 KB
master SendRequest netcoreapp3.1 141μs 821ns 7.15μs 0 0 0 17.28 KB
master SendRequest net472 0.00158ns 0.000518ns 0.00201ns 0 0 0 0 b
#6873 SendRequest net6.0 131μs 719ns 4.43μs 0 0 0 14.48 KB
#6873 SendRequest netcoreapp3.1 150μs 616ns 2.39μs 0 0 0 17.28 KB
#6873 SendRequest net472 0.004ns 0.00127ns 0.00491ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 653μs 7.16μs 70.9μs 0 0 0 41.81 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 745μs 8.26μs 80.5μs 0 0 0 41.86 KB
master WriteAndFlushEnrichedTraces net472 871μs 4.95μs 46.7μs 7.35 3.68 0 53.37 KB
#6873 WriteAndFlushEnrichedTraces net6.0 600μs 5.32μs 52.1μs 0 0 0 41.67 KB
#6873 WriteAndFlushEnrichedTraces netcoreapp3.1 721μs 6.51μs 64.1μs 0 0 0 41.83 KB
#6873 WriteAndFlushEnrichedTraces net472 845μs 4.86μs 41.2μs 4.46 0 0 53.2 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.3μs 3.03ns 11.3ns 0.0129 0 0 1.03 KB
master ExecuteNonQuery netcoreapp3.1 1.78μs 3.2ns 11.1ns 0.00901 0 0 1.02 KB
master ExecuteNonQuery net472 2.15μs 1.56ns 5.83ns 0.153 0.0109 0 995 B
#6873 ExecuteNonQuery net6.0 1.22μs 5.04ns 19.5ns 0.012 0 0 1.03 KB
#6873 ExecuteNonQuery netcoreapp3.1 1.81μs 6.53ns 25.3ns 0.009 0 0 1.02 KB
#6873 ExecuteNonQuery net472 2.11μs 2.69ns 10.1ns 0.149 0.0106 0 995 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.32μs 1.17ns 4.53ns 0.0133 0 0 984 B
master CallElasticsearch netcoreapp3.1 1.6μs 1.34ns 4.83ns 0.00809 0 0 984 B
master CallElasticsearch net472 2.58μs 1.38ns 4.98ns 0.154 0 0 1 KB
master CallElasticsearchAsync net6.0 1.28μs 1.58ns 6.13ns 0.0126 0 0 960 B
master CallElasticsearchAsync netcoreapp3.1 1.73μs 1.34ns 5.17ns 0.00864 0 0 1.03 KB
master CallElasticsearchAsync net472 2.6μs 1.17ns 4.53ns 0.156 0 0 1.06 KB
#6873 CallElasticsearch net6.0 1.28μs 0.786ns 2.83ns 0.0128 0 0 984 B
#6873 CallElasticsearch netcoreapp3.1 1.59μs 1.64ns 6.13ns 0.00794 0 0 984 B
#6873 CallElasticsearch net472 2.61μs 2.03ns 7.6ns 0.157 0 0 1 KB
#6873 CallElasticsearchAsync net6.0 1.35μs 1.04ns 4.04ns 0.0137 0 0 960 B
#6873 CallElasticsearchAsync netcoreapp3.1 1.65μs 1.67ns 6.26ns 0.00816 0 0 1.03 KB
#6873 CallElasticsearchAsync net472 2.7μs 1.43ns 5.37ns 0.162 0 0 1.06 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.35μs 0.862ns 3.23ns 0.0135 0 0 960 B
master ExecuteAsync netcoreapp3.1 1.62μs 1.7ns 6.12ns 0.00819 0 0 960 B
master ExecuteAsync net472 1.81μs 0.999ns 3.74ns 0.145 0 0 923 B
#6873 ExecuteAsync net6.0 1.26μs 1.13ns 4.37ns 0.0126 0 0 960 B
#6873 ExecuteAsync netcoreapp3.1 1.58μs 2.17ns 8.4ns 0.00786 0 0 960 B
#6873 ExecuteAsync net472 1.83μs 0.671ns 2.51ns 0.146 0 0 923 B
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 4.4μs 1.76ns 6.09ns 0.0221 0 0 2.32 KB
master SendAsync netcoreapp3.1 5.29μs 9.69ns 37.5ns 0.0263 0 0 2.86 KB
master SendAsync net472 7.45μs 5.2ns 19.5ns 0.49 0 0 3.13 KB
#6873 SendAsync net6.0 4.25μs 2.01ns 7.77ns 0.0217 0 0 2.32 KB
#6873 SendAsync netcoreapp3.1 5.46μs 3.47ns 13.4ns 0.0273 0 0 2.86 KB
#6873 SendAsync net472 7.51μs 5.49ns 21.3ns 0.488 0 0 3.13 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 1.68μs 1.82ns 7.07ns 0.0168 0 0 1.71 KB
master EnrichedLog netcoreapp3.1 2.34μs 1.83ns 7.09ns 0.0118 0 0 1.71 KB
master EnrichedLog net472 2.65μs 1.81ns 7.02ns 0.25 0 0 1.64 KB
#6873 EnrichedLog net6.0 1.56μs 4.94ns 19.1ns 0.0232 0 0 1.71 KB
#6873 EnrichedLog netcoreapp3.1 2.21μs 3.15ns 11.8ns 0.0215 0 0 1.71 KB
#6873 EnrichedLog net472 2.76μs 6.39ns 24.7ns 0.248 0 0 1.64 KB
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 112μs 295ns 1.14μs 0 0 0 4.32 KB
master EnrichedLog netcoreapp3.1 115μs 424ns 1.64μs 0 0 0 4.32 KB
master EnrichedLog net472 149μs 226ns 876ns 0 0 0 4.51 KB
#6873 EnrichedLog net6.0 117μs 379ns 1.47μs 0 0 0 4.32 KB
#6873 EnrichedLog netcoreapp3.1 123μs 405ns 1.57μs 0 0 0 4.32 KB
#6873 EnrichedLog net472 157μs 201ns 695ns 0 0 0 4.51 KB
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 3.26μs 2.4ns 9.29ns 0.0331 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 4.27μs 5.13ns 19.9ns 0.0214 0 0 2.26 KB
master EnrichedLog net472 4.89μs 3.09ns 12ns 0.318 0 0 2.09 KB
#6873 EnrichedLog net6.0 3.12μs 2.02ns 7.84ns 0.0314 0 0 2.26 KB
#6873 EnrichedLog netcoreapp3.1 4.31μs 1.99ns 7.72ns 0.0215 0 0 2.26 KB
#6873 EnrichedLog net472 4.78μs 4.13ns 15.5ns 0.309 0 0 2.09 KB
Benchmarks.Trace.RedisBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #6873

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.RedisBenchmark.SendReceive‑net6.0 1.124 1,368.41 1,538.14

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.37μs 1.14ns 4.41ns 0.0138 0 0 1.15 KB
master SendReceive netcoreapp3.1 1.8μs 1.13ns 4.22ns 0.00907 0 0 1.15 KB
master SendReceive net472 2.16μs 1.57ns 6.06ns 0.179 0 0 1.16 KB
#6873 SendReceive net6.0 1.53μs 6.95ns 27.8ns 0.0152 0 0 1.15 KB
#6873 SendReceive netcoreapp3.1 1.88μs 3.53ns 13.7ns 0.00931 0 0 1.15 KB
#6873 SendReceive net472 2.17μs 3.92ns 15.2ns 0.182 0 0 1.16 KB
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.83μs 1.73ns 6.69ns 0.0142 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 3.9μs 2.18ns 7.85ns 0.0194 0 0 1.69 KB
master EnrichedLog net472 4.46μs 2.75ns 10.6ns 0.313 0 0 2.08 KB
#6873 EnrichedLog net6.0 2.75μs 1.95ns 7.54ns 0.0138 0 0 1.64 KB
#6873 EnrichedLog netcoreapp3.1 3.97μs 6.42ns 23.1ns 0.0199 0 0 1.69 KB
#6873 EnrichedLog net472 4.55μs 3.96ns 15.3ns 0.319 0 0 2.08 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 412ns 0.354ns 1.32ns 0.00815 0 0 584 B
master StartFinishSpan netcoreapp3.1 582ns 0.765ns 2.96ns 0.00573 0 0 584 B
master StartFinishSpan net472 658ns 0.658ns 2.37ns 0.0922 0 0 586 B
master StartFinishScope net6.0 492ns 0.316ns 1.18ns 0.00975 0 0 704 B
master StartFinishScope netcoreapp3.1 752ns 0.69ns 2.58ns 0.00755 0 0 704 B
master StartFinishScope net472 838ns 0.778ns 3.01ns 0.105 0 0 666 B
#6873 StartFinishSpan net6.0 408ns 0.325ns 1.26ns 0.00816 0 0 584 B
#6873 StartFinishSpan netcoreapp3.1 600ns 0.713ns 2.57ns 0.00607 0 0 584 B
#6873 StartFinishSpan net472 645ns 0.473ns 1.77ns 0.0905 0 0 586 B
#6873 StartFinishScope net6.0 481ns 0.46ns 1.72ns 0.00958 0 0 704 B
#6873 StartFinishScope netcoreapp3.1 711ns 0.557ns 2.16ns 0.00711 0 0 704 B
#6873 StartFinishScope net472 863ns 0.99ns 3.84ns 0.104 0 0 666 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 597ns 0.475ns 1.84ns 0.00901 0 0 704 B
master RunOnMethodBegin netcoreapp3.1 1μs 1.28ns 4.78ns 0.00501 0 0 704 B
master RunOnMethodBegin net472 1.14μs 1.45ns 5.62ns 0.102 0 0 666 B
#6873 RunOnMethodBegin net6.0 613ns 0.724ns 2.81ns 0.00922 0 0 704 B
#6873 RunOnMethodBegin netcoreapp3.1 937ns 1.1ns 4.27ns 0.00932 0 0 704 B
#6873 RunOnMethodBegin net472 1.07μs 1.78ns 6.88ns 0.101 0 0 666 B

andrewlock avatar Apr 23 '25 09:04 andrewlock