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

[Profiler] Refactor LinuxStackFramesCollector

Open gleocadie opened this issue 1 year ago • 3 comments

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

gleocadie avatar Feb 02 '24 07:02 gleocadie

Datadog Report

Branch report: gleocadie/refactor-linux-unwinders Commit report: b7abfc5 Test service: dd-trace-dotnet

:x: 2 Failed (0 Known Flaky), 303547 Passed, 1806 Skipped, 57m 42.19s Wall Time

:x: Failed Tests (2)

  • TelemetryControllerDumpsAllTelemetryToFile - Datadog.Trace.Tests.Telemetry.TelemetryControllerTests - Details

    Expand for error
    xpected products not to be <null>.
    
  • Profiler_liveheap_cpu_walltime - scenarios - Details

    Expand for error
    atal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
      at System.Diagnostics.Tracing.EventPipePayloadDecoder.DecodePayload(EventMetadata ByRef, System.ReadOnlySpan\`1<Byte>)
      at System.Diagnostics.Tracing.NativeRuntimeEventSource.ProcessEvent(UInt32, UInt32, System.DateTime, System.Guid, System.Guid, System.ReadOnlySpan\`1<Byte>)
      at System.Diagnostics.Tracing.EventPipeEventDispatcher.DispatchEventsToEventListeners()
      at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
      at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
    
    ####### Starting at 02/02/2024 09:24:27
    
    sage:
    ..
    

datadog-ddstaging[bot] avatar Feb 02 '24 08:02 datadog-ddstaging[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 (5134) - mean (73ms)  : 57, 88
     .   : milestone, 73,
    master - mean (71ms)  : 62, 80
     .   : milestone, 71,

    section CallTarget+Inlining+NGEN
    This PR (5134) - mean (958ms)  : 935, 981
     .   : milestone, 958,
    master - mean (960ms)  : 936, 983
     .   : milestone, 960,

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

    section CallTarget+Inlining+NGEN
    This PR (5134) - mean (688ms)  : 669, 706
     .   : milestone, 688,
    master - mean (696ms)  : 678, 714
     .   : milestone, 696,

gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5134) - mean (89ms)  : 85, 94
     .   : milestone, 89,
    master - mean (90ms)  : 88, 93
     .   : milestone, 90,

    section CallTarget+Inlining+NGEN
    This PR (5134) - mean (643ms)  : 616, 670
     .   : milestone, 643,
    master - mean (647ms)  : 626, 668
     .   : milestone, 647,

gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5134) - mean (188ms)  : 185, 191
     .   : milestone, 188,
    master - mean (188ms)  : 185, 191
     .   : milestone, 188,

    section CallTarget+Inlining+NGEN
    This PR (5134) - mean (1,052ms)  : 1031, 1072
     .   : milestone, 1052,
    master - mean (1,050ms)  : 1027, 1072
     .   : milestone, 1050,

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

    section CallTarget+Inlining+NGEN
    This PR (5134) - mean (1,034ms)  : 1013, 1056
     .   : milestone, 1034,
    master - mean (1,039ms)  : 1016, 1062
     .   : milestone, 1039,

gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5134) - mean (261ms)  : 256, 266
     .   : milestone, 261,
    master - mean (262ms)  : 258, 265
     .   : milestone, 262,

    section CallTarget+Inlining+NGEN
    This PR (5134) - mean (1,004ms)  : 977, 1030
     .   : milestone, 1004,
    master - mean (1,004ms)  : 979, 1029
     .   : milestone, 1004,

andrewlock avatar Feb 02 '24 08:02 andrewlock

Benchmarks Report :snail:

Benchmarks for #5134 compared to master:

  • 3 benchmarks are faster, with geometric mean 1.157
  • 1 benchmarks are slower, with geometric mean 1.121
  • 1 benchmarks have fewer allocations
  • 1 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: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 8.54μs 45.7ns 233ns 0.029 0.0124 0 7.49 KB
master StartStopWithChild netcoreapp3.1 10.5μs 49.6ns 185ns 0.0263 0.0105 0 7.58 KB
master StartStopWithChild net472 17.1μs 60ns 232ns 1.32 0.328 0.0948 7.96 KB
#5134 StartStopWithChild net6.0 8.83μs 47.7ns 252ns 0.0226 0.00905 0 7.49 KB
#5134 StartStopWithChild netcoreapp3.1 10.8μs 57.1ns 302ns 0.0313 0.0157 0 7.58 KB
#5134 StartStopWithChild net472 17.2μs 73.3ns 284ns 1.34 0.341 0.102 7.96 KB
Benchmarks.Trace.AgentWriterBenchmark - 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 446μs 85.1ns 307ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 613μs 312ns 1.21μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 796μs 488ns 1.89μs 0.393 0 0 3.3 KB
#5134 WriteAndFlushEnrichedTraces net6.0 461μs 189ns 731ns 0 0 0 2.7 KB
#5134 WriteAndFlushEnrichedTraces netcoreapp3.1 612μs 109ns 395ns 0 0 0 2.7 KB
#5134 WriteAndFlushEnrichedTraces net472 771μs 389ns 1.5μs 0.386 0 0 3.3 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - 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 AllCycleSimpleBody net6.0 38.6μs 19.6ns 76ns 0.0192 0 0 2.36 KB
master AllCycleSimpleBody netcoreapp3.1 41.9μs 54.7ns 212ns 0.0208 0 0 2.34 KB
master AllCycleSimpleBody net472 44.8μs 23.5ns 91ns 0.381 0 0 2.41 KB
master AllCycleMoreComplexBody net6.0 203μs 449ns 1.74μs 0.1 0 0 9.84 KB
master AllCycleMoreComplexBody netcoreapp3.1 215μs 293ns 1.14μs 0.105 0 0 9.73 KB
master AllCycleMoreComplexBody net472 225μs 110ns 413ns 1.46 0 0 9.91 KB
master ObjectExtractorSimpleBody net6.0 142ns 0.203ns 0.784ns 0.00395 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 209ns 0.198ns 0.768ns 0.00368 0 0 272 B
master ObjectExtractorSimpleBody net472 165ns 0.0873ns 0.338ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 3.05μs 1.87ns 7.26ns 0.0533 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 3.9μs 1.95ns 7.56ns 0.0511 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 3.74μs 1.87ns 7.25ns 0.603 0.0056 0 3.8 KB
#5134 AllCycleSimpleBody net6.0 38.8μs 27.9ns 108ns 0.0196 0 0 2.36 KB
#5134 AllCycleSimpleBody netcoreapp3.1 42μs 58.6ns 219ns 0.0208 0 0 2.34 KB
#5134 AllCycleSimpleBody net472 45μs 19ns 73.5ns 0.38 0 0 2.41 KB
#5134 AllCycleMoreComplexBody net6.0 203μs 65.6ns 245ns 0.1 0 0 9.84 KB
#5134 AllCycleMoreComplexBody netcoreapp3.1 214μs 318ns 1.23μs 0.107 0 0 9.73 KB
#5134 AllCycleMoreComplexBody net472 227μs 67.6ns 244ns 1.47 0 0 9.91 KB
#5134 ObjectExtractorSimpleBody net6.0 142ns 0.15ns 0.583ns 0.00392 0 0 280 B
#5134 ObjectExtractorSimpleBody netcoreapp3.1 206ns 0.294ns 1.14ns 0.00372 0 0 272 B
#5134 ObjectExtractorSimpleBody net472 164ns 0.0872ns 0.338ns 0.0446 0 0 281 B
#5134 ObjectExtractorMoreComplexBody net6.0 2.92μs 2.47ns 9.26ns 0.0524 0 0 3.78 KB
#5134 ObjectExtractorMoreComplexBody netcoreapp3.1 3.99μs 3.07ns 11.9ns 0.05 0 0 3.69 KB
#5134 ObjectExtractorMoreComplexBody net472 3.75μs 3.12ns 12.1ns 0.602 0.00561 0 3.8 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Faster :tada: Same allocations :heavy_check_mark:

Faster :tada: in #5134

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWaf(args: NestedMap (100))‑net6.0 1.126 114,038.86 101,283.82

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWaf(args=NestedMap (10)) net6.0 53.7μs 190ns 736ns 0.236 0 0 16.66 KB
master RunWaf(args=NestedMap (10)) netcoreapp3.1 70.2μs 394ns 2.64μs 0.212 0 0 16.65 KB
master RunWaf(args=NestedMap (10)) net472 98.9μs 53.7ns 201ns 2.62 0.0987 0 16.73 KB
master RunWafTwice(args=NestedMap (10)) net6.0 57.4μs 330ns 2.76μs 0.224 0 0 17.33 KB
master RunWafTwice(args=NestedMap (10)) netcoreapp3.1 72.7μs 381ns 1.98μs 0.214 0 0 17.31 KB
master RunWafTwice(args=NestedMap (10)) net472 105μs 41.7ns 156ns 2.76 0.106 0 17.42 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 101μs 35.6ns 138ns 0.253 0 0 19.49 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 121μs 551ns 2.13μs 0.234 0 0 19.44 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net472 150μs 187ns 724ns 3.07 0.0748 0 19.72 KB
master RunWaf(args=NestedMap (100)) net6.0 114μs 169ns 654ns 0.448 0 0 33.35 KB
master RunWaf(args=NestedMap (100)) netcoreapp3.1 136μs 643ns 2.57μs 0.465 0 0 33.92 KB
master RunWaf(args=NestedMap (100)) net472 190μs 111ns 430ns 5.38 0.378 0 34.26 KB
master RunWafTwice(args=NestedMap (100)) net6.0 110μs 51.1ns 191ns 0.436 0 0 34.02 KB
master RunWafTwice(args=NestedMap (100)) netcoreapp3.1 147μs 110ns 426ns 0.468 0 0 34.58 KB
master RunWafTwice(args=NestedMap (100)) net472 199μs 98.2ns 380ns 5.47 0.397 0 34.95 KB
master RunWafWithAttack(args=Neste(...)tack) [23]) net6.0 156μs 272ns 1.05μs 0.475 0 0 36.18 KB
master RunWafWithAttack(args=Neste(...)tack) [23]) netcoreapp3.1 186μs 626ns 2.43μs 0.473 0 0 36.71 KB
master RunWafWithAttack(args=Neste(...)tack) [23]) net472 246μs 89.4ns 334ns 5.89 0.491 0 37.26 KB
master RunWaf(args=NestedMap (20)) net6.0 102μs 212ns 970ns 0.461 0 0 32.78 KB
master RunWaf(args=NestedMap (20)) netcoreapp3.1 134μs 636ns 2.7μs 0.407 0 0 32.89 KB
master RunWaf(args=NestedMap (20)) net472 192μs 128ns 495ns 5.23 0.381 0 33.23 KB
master RunWafTwice(args=NestedMap (20)) net6.0 109μs 50.1ns 187ns 0.438 0 0 33.45 KB
master RunWafTwice(args=NestedMap (20)) netcoreapp3.1 141μs 398ns 1.54μs 0.428 0 0 33.55 KB
master RunWafTwice(args=NestedMap (20)) net472 199μs 126ns 472ns 5.37 0.397 0 33.92 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 164μs 616ns 2.39μs 0.493 0 0 35.61 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 192μs 995ns 5.07μs 0.461 0 0 35.68 KB
master RunWafWithAttack(args=Neste(...)tack) [22]) net472 246μs 137ns 529ns 5.64 0.49 0 36.22 KB
#5134 RunWaf(args=NestedMap (10)) net6.0 54.6μs 165ns 639ns 0.214 0 0 16.66 KB
#5134 RunWaf(args=NestedMap (10)) netcoreapp3.1 73.5μs 159ns 615ns 0.203 0 0 16.65 KB
#5134 RunWaf(args=NestedMap (10)) net472 97.4μs 40.3ns 156ns 2.63 0.0974 0 16.73 KB
#5134 RunWafTwice(args=NestedMap (10)) net6.0 55.2μs 29.7ns 115ns 0.22 0 0 17.33 KB
#5134 RunWafTwice(args=NestedMap (10)) netcoreapp3.1 75.2μs 400ns 2.11μs 0.213 0 0 17.31 KB
#5134 RunWafTwice(args=NestedMap (10)) net472 106μs 50.9ns 197ns 2.75 0.106 0 17.42 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 102μs 430ns 1.67μs 0.271 0 0 19.49 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 120μs 454ns 1.76μs 0.237 0 0 19.44 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [22]) net472 150μs 106ns 398ns 3.13 0.149 0 19.72 KB
#5134 RunWaf(args=NestedMap (100)) net6.0 102μs 490ns 1.9μs 0.456 0 0 33.35 KB
#5134 RunWaf(args=NestedMap (100)) netcoreapp3.1 136μs 689ns 3.23μs 0.466 0 0 33.92 KB
#5134 RunWaf(args=NestedMap (100)) net472 197μs 92.9ns 360ns 5.4 0.379 0 34.27 KB
#5134 RunWafTwice(args=NestedMap (100)) net6.0 103μs 40.4ns 156ns 0.445 0 0 34.02 KB
#5134 RunWafTwice(args=NestedMap (100)) netcoreapp3.1 139μs 727ns 3.49μs 0.427 0 0 34.58 KB
#5134 RunWafTwice(args=NestedMap (100)) net472 197μs 67ns 242ns 5.53 0.395 0 34.95 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [23]) net6.0 155μs 455ns 1.76μs 0.477 0 0 36.18 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [23]) netcoreapp3.1 189μs 931ns 4.27μs 0.462 0 0 36.71 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [23]) net472 249μs 174ns 652ns 5.86 0.374 0 37.26 KB
#5134 RunWaf(args=NestedMap (20)) net6.0 108μs 261ns 1.01μs 0.408 0 0 32.78 KB
#5134 RunWaf(args=NestedMap (20)) netcoreapp3.1 136μs 738ns 4.17μs 0.409 0 0 32.89 KB
#5134 RunWaf(args=NestedMap (20)) net472 189μs 77.6ns 300ns 5.27 0.377 0 33.23 KB
#5134 RunWafTwice(args=NestedMap (20)) net6.0 115μs 46ns 172ns 0.461 0 0 33.45 KB
#5134 RunWafTwice(args=NestedMap (20)) netcoreapp3.1 142μs 777ns 4.46μs 0.425 0 0 33.55 KB
#5134 RunWafTwice(args=NestedMap (20)) net472 204μs 935ns 3.62μs 5.37 0.397 0 33.92 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [22]) net6.0 157μs 72.8ns 282ns 0.46 0 0 35.61 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [22]) netcoreapp3.1 188μs 666ns 2.58μs 0.454 0 0 35.68 KB
#5134 RunWafWithAttack(args=Neste(...)tack) [22]) net472 247μs 91.2ns 329ns 5.66 0.492 0 36.22 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 174μs 253ns 913ns 0.259 0 0 18.26 KB
master SendRequest netcoreapp3.1 195μs 306ns 1.19μs 0.194 0 0 20.42 KB
master SendRequest net472 0.000332ns 0.000185ns 0.000718ns 0 0 0 0 b
#5134 SendRequest net6.0 171μs 141ns 546ns 0.171 0 0 18.26 KB
#5134 SendRequest netcoreapp3.1 190μs 444ns 1.72μs 0.189 0 0 20.42 KB
#5134 SendRequest net472 5.57E‑05ns 3.53E‑05ns 0.000137ns 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 543μs 409ns 1.58μs 0.558 0 0 41.74 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 650μs 1.84μs 7.12μs 0.322 0 0 41.81 KB
master WriteAndFlushEnrichedTraces net472 850μs 3.88μs 15μs 8.33 2.5 0.417 53.24 KB
#5134 WriteAndFlushEnrichedTraces net6.0 536μs 420ns 1.63μs 0.53 0 0 41.58 KB
#5134 WriteAndFlushEnrichedTraces netcoreapp3.1 650μs 819ns 2.84μs 0.336 0 0 41.81 KB
#5134 WriteAndFlushEnrichedTraces net472 839μs 2.22μs 7.99μs 8.12 2.44 0.406 53.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.11μs 0.578ns 2.24ns 0.011 0 0 776 B
master ExecuteNonQuery netcoreapp3.1 1.45μs 0.632ns 2.37ns 0.0102 0 0 776 B
master ExecuteNonQuery net472 1.73μs 1.11ns 4.31ns 0.117 0 0 738 B
#5134 ExecuteNonQuery net6.0 1.12μs 0.578ns 2.24ns 0.0107 0 0 776 B
#5134 ExecuteNonQuery netcoreapp3.1 1.44μs 3.17ns 12.3ns 0.0107 0 0 776 B
#5134 ExecuteNonQuery net472 1.79μs 1.26ns 4.86ns 0.117 0 0 738 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.22μs 0.46ns 1.72ns 0.0134 0 0 944 B
master CallElasticsearch netcoreapp3.1 1.51μs 0.474ns 1.77ns 0.013 0 0 944 B
master CallElasticsearch net472 2.4μs 1.61ns 5.58ns 0.152 0 0 963 B
master CallElasticsearchAsync net6.0 1.33μs 0.852ns 3.19ns 0.0128 0 0 920 B
master CallElasticsearchAsync netcoreapp3.1 1.66μs 0.929ns 3.47ns 0.0133 0 0 992 B
master CallElasticsearchAsync net472 2.7μs 0.63ns 2.36ns 0.162 0 0 1.02 KB
#5134 CallElasticsearch net6.0 1.16μs 0.665ns 2.58ns 0.0134 0 0 944 B
#5134 CallElasticsearch netcoreapp3.1 1.51μs 0.691ns 2.59ns 0.0128 0 0 944 B
#5134 CallElasticsearch net472 2.51μs 0.947ns 3.67ns 0.152 0 0 963 B
#5134 CallElasticsearchAsync net6.0 1.28μs 0.632ns 2.36ns 0.0128 0 0 920 B
#5134 CallElasticsearchAsync netcoreapp3.1 1.63μs 2.11ns 7.59ns 0.0131 0 0 992 B
#5134 CallElasticsearchAsync net472 2.68μs 1.05ns 4.06ns 0.162 0 0 1.02 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.38μs 0.66ns 2.47ns 0.0124 0 0 920 B
master ExecuteAsync netcoreapp3.1 1.66μs 0.529ns 1.83ns 0.012 0 0 920 B
master ExecuteAsync net472 1.84μs 0.663ns 2.57ns 0.14 0 0 883 B
#5134 ExecuteAsync net6.0 1.27μs 0.721ns 2.79ns 0.0126 0 0 920 B
#5134 ExecuteAsync netcoreapp3.1 1.57μs 0.774ns 2.89ns 0.0126 0 0 920 B
#5134 ExecuteAsync net472 1.94μs 0.686ns 2.57ns 0.14 0 0 883 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.04μs 1.04ns 3.88ns 0.0302 0 0 2.1 KB
master SendAsync netcoreapp3.1 4.91μs 24.7ns 131ns 0.0361 0 0 2.64 KB
master SendAsync net472 7.73μs 4.17ns 15.6ns 0.525 0 0 3.31 KB
#5134 SendAsync net6.0 4.14μs 2.07ns 7.75ns 0.029 0 0 2.1 KB
#5134 SendAsync netcoreapp3.1 4.92μs 2.56ns 9.57ns 0.0369 0 0 2.64 KB
#5134 SendAsync net472 7.73μs 4.54ns 17.6ns 0.524 0 0 3.31 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Faster :tada: More allocations :warning:

Faster :tada: in #5134

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 1.175 60,900.00 51,850.00 bimodal

More allocations :warning: in #5134

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 204.7 KB 206.29 KB 1.58 KB 0.77%

Fewer allocations :tada: in #5134

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 59.26 KB 57.93 KB -1.33 KB -2.24%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 62μs 844ns 8.23μs 0 0 0 43.44 KB
master StringConcatBenchmark netcoreapp3.1 60.4μs 700ns 6.82μs 0 0 0 42.64 KB
master StringConcatBenchmark net472 38.1μs 100ns 361ns 0 0 0 59.26 KB
master StringConcatAspectBenchmark net6.0 274μs 1.45μs 7.12μs 0 0 0 204.7 KB
master StringConcatAspectBenchmark netcoreapp3.1 269μs 4.24μs 40.9μs 0 0 0 202.27 KB
master StringConcatAspectBenchmark net472 228μs 1.97μs 18.8μs 0 0 0 221.18 KB
#5134 StringConcatBenchmark net6.0 52μs 265ns 1.3μs 0 0 0 43.44 KB
#5134 StringConcatBenchmark netcoreapp3.1 53.2μs 251ns 1.01μs 0 0 0 42.64 KB
#5134 StringConcatBenchmark net472 38.7μs 172ns 644ns 0 0 0 57.93 KB
#5134 StringConcatAspectBenchmark net6.0 266μs 4.09μs 38.3μs 0 0 0 206.29 KB
#5134 StringConcatAspectBenchmark netcoreapp3.1 278μs 1.35μs 6.33μs 0 0 0 201.62 KB
#5134 StringConcatAspectBenchmark net472 226μs 1.8μs 16.9μs 0 0 0 221.18 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.46μs 0.427ns 1.54ns 0.022 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 2.25μs 1.44ns 5.58ns 0.0216 0 0 1.58 KB
master EnrichedLog net472 2.51μs 2.19ns 8.18ns 0.239 0 0 1.51 KB
#5134 EnrichedLog net6.0 1.42μs 0.694ns 2.6ns 0.0225 0 0 1.58 KB
#5134 EnrichedLog netcoreapp3.1 2.3μs 1.02ns 3.82ns 0.0207 0 0 1.58 KB
#5134 EnrichedLog net472 2.67μs 3.02ns 11.7ns 0.239 0 0 1.51 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 114μs 63.9ns 239ns 0.0566 0 0 4.22 KB
master EnrichedLog netcoreapp3.1 117μs 117ns 440ns 0 0 0 4.22 KB
master EnrichedLog net472 148μs 75.3ns 292ns 0.665 0.222 0 4.4 KB
#5134 EnrichedLog net6.0 113μs 101ns 392ns 0.0562 0 0 4.22 KB
#5134 EnrichedLog netcoreapp3.1 118μs 63.6ns 238ns 0 0 0 4.22 KB
#5134 EnrichedLog net472 148μs 66.1ns 238ns 0.664 0.221 0 4.4 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.14μs 8.9ns 34.5ns 0.0294 0 0 2.14 KB
master EnrichedLog netcoreapp3.1 4.27μs 1.11ns 4.31ns 0.0299 0 0 2.14 KB
master EnrichedLog net472 4.89μs 2.48ns 9.6ns 0.309 0 0 1.95 KB
#5134 EnrichedLog net6.0 3.08μs 1.22ns 4.56ns 0.0296 0 0 2.14 KB
#5134 EnrichedLog netcoreapp3.1 4.38μs 2.39ns 9.25ns 0.0284 0 0 2.14 KB
#5134 EnrichedLog net472 4.79μs 2.76ns 10.3ns 0.31 0 0 1.95 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 1.35μs 1.83ns 7.09ns 0.0156 0 0 1.11 KB
master SendReceive netcoreapp3.1 1.74μs 2.31ns 8.94ns 0.0148 0 0 1.11 KB
master SendReceive net472 2.24μs 2.21ns 8.56ns 0.178 0 0 1.12 KB
#5134 SendReceive net6.0 1.39μs 0.588ns 2.28ns 0.0154 0 0 1.11 KB
#5134 SendReceive netcoreapp3.1 1.78μs 0.521ns 2.02ns 0.0152 0 0 1.11 KB
#5134 SendReceive net472 2.13μs 3.35ns 13ns 0.178 0 0 1.12 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.77μs 0.689ns 2.58ns 0.0221 0 0 1.54 KB
master EnrichedLog netcoreapp3.1 3.94μs 2.5ns 9.7ns 0.0216 0 0 1.58 KB
master EnrichedLog net472 4.42μs 2.51ns 9.72ns 0.313 0 0 1.97 KB
#5134 EnrichedLog net6.0 2.73μs 1.07ns 4.13ns 0.0218 0 0 1.54 KB
#5134 EnrichedLog netcoreapp3.1 3.9μs 3.44ns 13.3ns 0.0194 0 0 1.58 KB
#5134 EnrichedLog net472 4.24μs 5.89ns 21.2ns 0.312 0 0 1.97 KB
Benchmarks.Trace.SpanBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #5134

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net6.0 1.121 606.11 679.23

Faster :tada: in #5134

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 1.170 524.49 448.28

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 525ns 0.209ns 0.81ns 0.00758 0 0 544 B
master StartFinishSpan netcoreapp3.1 719ns 0.25ns 0.9ns 0.0075 0 0 544 B
master StartFinishSpan net472 718ns 0.359ns 1.39ns 0.0866 0 0 546 B
master StartFinishScope net6.0 606ns 0.207ns 0.774ns 0.00939 0 0 664 B
master StartFinishScope netcoreapp3.1 911ns 0.292ns 1.09ns 0.00886 0 0 664 B
master StartFinishScope net472 924ns 0.385ns 1.49ns 0.0992 0 0 626 B
#5134 StartFinishSpan net6.0 448ns 0.147ns 0.568ns 0.00764 0 0 544 B
#5134 StartFinishSpan netcoreapp3.1 692ns 1.85ns 6.66ns 0.00721 0 0 544 B
#5134 StartFinishSpan net472 762ns 0.309ns 1.2ns 0.0866 0 0 546 B
#5134 StartFinishScope net6.0 679ns 0.271ns 1.05ns 0.00915 0 0 664 B
#5134 StartFinishScope netcoreapp3.1 908ns 0.851ns 3.3ns 0.00872 0 0 664 B
#5134 StartFinishScope net472 1.03μs 0.464ns 1.8ns 0.0991 0 0 626 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 609ns 0.263ns 1.02ns 0.00913 0 0 664 B
master RunOnMethodBegin netcoreapp3.1 841ns 0.654ns 2.45ns 0.00901 0 0 664 B
master RunOnMethodBegin net472 1.07μs 0.406ns 1.57ns 0.099 0 0 626 B
#5134 RunOnMethodBegin net6.0 655ns 0.237ns 0.885ns 0.00912 0 0 664 B
#5134 RunOnMethodBegin netcoreapp3.1 936ns 0.651ns 2.25ns 0.00895 0 0 664 B
#5134 RunOnMethodBegin net472 1.13μs 0.347ns 1.34ns 0.0992 0 0 626 B

andrewlock avatar Feb 03 '24 08:02 andrewlock