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

[CI Visibility] - New CI Visibility code coverage algorithm

Open tonyredondo opened this issue 1 year ago • 4 comments

Summary of changes

This PR contains a new CI Visibility code coverage algorithm with the following changes:

  1. Is not longer based on the TypeIndex and MethodIndex pair, but now is only based on files.
  2. Removes the requirement of read the symbols at runtime to map the index to the actual values for the filepath and line.
  3. Removes the 1 array for counters per type + method approach, with a single unmanaged memory segment for the complete module where each file counter is an offset of that single segment.
  4. Removes all posible bound checks and removes the preassure of the garbage collector.
  5. Uses a new format based on a bitmap per file, this is done for doing coverage calculations on the backend side. More info in https://docs.google.com/document/d/1s6AiEt6bKmp2PesgObI6h7zafs5vhGI1udppu-4dVXE/edit
  6. It's faster, in the CI Visibility test environment we have a couple of .NET project, one of them is LiteDB a database with a lot of logic and loops, this is really intensive and it gets affected dramatically by the code coverage solution. Other not so much, but still we see improvements over the current algorithm.
LiteDB
======
Master: 423.8% overhead - From: 15425.2985ms To: 80800.9511ms
NewAlgo: 366.5% overhead - From: 15819.1758ms To: 73801.7002ms  Delta:  7seg


Peasy.NET
=========
Master: 12% overhead - From: 8411.2397ms To: 9418.2832ms
NewAlgo: 11.8% overhead - From: 8419.9189ms To: 9414.2995ms  Delta: 4ms

Hop Framework
============
Master: 19% overhead - From: 5277.2108ms To: 6296.4939ms
NewAlgo:  11.9% overhead - From: 5261.3471ms To: 5885.1639ms Delta: 411ms

Dashboard with the data image

Test coverage

Tests have been adapted to the new code coverage logic and a new test suite for the FileBitmap class was added. Also tested with the projects in the test-environment repo.

tonyredondo avatar Feb 29 '24 16:02 tonyredondo

Snapshots difference summary

The following differences have been observed in committed snapshots. It is meant to help the reviewer. The diff is simplistic, so please check some files anyway while we improve it.

github-actions[bot] avatar Mar 01 '24 23:03 github-actions[bot]

Datadog Report

Branch report: tony/civisibility-new-code-coverage-per-file Commit report: b5df862 Test service: dd-trace-dotnet

:white_check_mark: 0 Failed, 332456 Passed, 1595 Skipped, 36m 1.67s Wall Time :snowflake: 2 New Flaky

New Flaky Tests (2)

  • SubmitsTraces - Datadog.Trace.ClrProfiler.IntegrationTests.StackExchangeRedisTests - Last Failure

    Expand for error
    xpected exit code: 0, actual exit code: 134.
    
  • SubmitsTraces - Datadog.Trace.ClrProfiler.IntegrationTests.StackExchangeRedisTests - Last Failure

    Expand for error
    esults do not match.
    ifferences:
    eceived: StackExchangeRedisTests.V1_2_2.SchemaV1.received.txt
    erified: StackExchangeRedisTests.V1_2_2.SchemaV1.verified.txt
    eceived Content:
    
     {
       TraceId: Id_1,
       SpanId: Id_2,
       Name: redis.command,
    ..
    

datadog-ddstaging[bot] avatar Mar 01 '24 23:03 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 (5254) - mean (74ms)  : 65, 83
     .   : milestone, 74,
    master - mean (73ms)  : 65, 82
     .   : milestone, 73,

    section CallTarget+Inlining+NGEN
    This PR (5254) - mean (1,004ms)  : 986, 1022
     .   : milestone, 1004,
    master - mean (996ms)  : 972, 1020
     .   : milestone, 996,

gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5254) - mean (110ms)  : 107, 113
     .   : milestone, 110,
    master - mean (110ms)  : 107, 113
     .   : milestone, 110,

    section CallTarget+Inlining+NGEN
    This PR (5254) - mean (713ms)  : 692, 734
     .   : milestone, 713,
    master - mean (712ms)  : 688, 736
     .   : milestone, 712,

gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5254) - mean (94ms)  : 90, 98
     .   : milestone, 94,
    master - mean (94ms)  : 90, 97
     .   : milestone, 94,

    section CallTarget+Inlining+NGEN
    This PR (5254) - mean (677ms)  : 656, 697
     .   : milestone, 677,
    master - mean (668ms)  : 649, 687
     .   : milestone, 668,

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

    section CallTarget+Inlining+NGEN
    This PR (5254) - mean (1,082ms)  : 1061, 1103
     .   : milestone, 1082,
    master - mean (1,075ms)  : 1050, 1099
     .   : milestone, 1075,

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

    section CallTarget+Inlining+NGEN
    This PR (5254) - mean (877ms)  : 855, 899
     .   : milestone, 877,
    master - mean (874ms)  : 854, 893
     .   : milestone, 874,

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

    section CallTarget+Inlining+NGEN
    This PR (5254) - mean (861ms)  : 835, 886
     .   : milestone, 861,
    master - mean (858ms)  : 838, 879
     .   : milestone, 858,

andrewlock avatar Mar 01 '24 23:03 andrewlock

Throughput/Crank Report:zap:

Throughput results for AspNetCoreSimpleController comparing the following branches/commits:

Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red.

Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards!

gantt
    title Throughput Linux x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (5254) (11.086M)   : 0, 11086380
    master (11.006M)   : 0, 11005804
    benchmarks/2.9.0 (11.089M)   : 0, 11088850

    section Automatic
    This PR (5254) (7.585M)   : 0, 7584937
    master (7.648M)   : 0, 7648107
    benchmarks/2.9.0 (8.058M)   : 0, 8058241

    section Trace stats
    This PR (5254) (7.947M)   : 0, 7947089
    master (8.272M)   : 0, 8272485

    section Manual
    This PR (5254) (9.617M)   : 0, 9616664
    master (9.987M)   : 0, 9986737

    section Manual + Automatic
    This PR (5254) (7.153M)   : 0, 7153060
    master (7.392M)   : 0, 7391763

    section Version Conflict
    This PR (5254) (6.578M)   : 0, 6577865
    master (6.585M)   : 0, 6585168

gantt
    title Throughput Linux arm64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (5254) (9.707M)   : 0, 9707294
    master (9.450M)   : 0, 9449974
    benchmarks/2.9.0 (9.695M)   : 0, 9694730

    section Automatic
    This PR (5254) (6.662M)   : 0, 6661997
    master (6.489M)   : 0, 6489412

    section Trace stats
    This PR (5254) (6.916M)   : 0, 6916112
    master (6.885M)   : 0, 6884816

    section Manual
    This PR (5254) (8.317M)   : 0, 8317480
    master (8.367M)   : 0, 8366824

    section Manual + Automatic
    This PR (5254) (6.215M)   : 0, 6215280
    master (6.136M)   : 0, 6135795

    section Version Conflict
    This PR (5254) (5.692M)   : 0, 5692354
    master (5.680M)   : 0, 5679783

gantt
    title Throughput Windows x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (5254) (9.913M)   : 0, 9912997
    master (10.049M)   : 0, 10048804
    benchmarks/2.9.0 (9.845M)   : 0, 9845291

    section Automatic
    This PR (5254) (7.142M)   : 0, 7142263
    master (7.116M)   : 0, 7115813
    benchmarks/2.9.0 (7.464M)   : 0, 7464272

    section Trace stats
    This PR (5254) (7.457M)   : 0, 7456850
    master (7.499M)   : 0, 7499054

    section Manual
    This PR (5254) (8.647M)   : 0, 8647396
    master (8.866M)   : 0, 8865523

    section Manual + Automatic
    This PR (5254) (6.819M)   : 0, 6818705
    master (6.763M)   : 0, 6763420

    section Version Conflict
    This PR (5254) (6.316M)   : 0, 6316006
    master (6.202M)   : 0, 6201747

andrewlock avatar Mar 04 '24 17:03 andrewlock

Benchmarks Report for tracer :snail:

Benchmarks for #5254 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.130
  • 1 benchmarks are slower, with geometric mean 1.187
  • 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.5μs 44.5ns 299ns 0.0224 0.00896 0 7.51 KB
master StartStopWithChild netcoreapp3.1 10.9μs 54.5ns 238ns 0.022 0.00551 0 7.61 KB
master StartStopWithChild net472 17μs 61.2ns 237ns 1.38 0.358 0.153 8.15 KB
#5254 StartStopWithChild net6.0 8.68μs 46.4ns 250ns 0.0174 0.00869 0 7.51 KB
#5254 StartStopWithChild netcoreapp3.1 10.8μs 60.3ns 372ns 0.0313 0.0156 0 7.6 KB
#5254 StartStopWithChild net472 17.6μs 66.8ns 259ns 1.37 0.354 0.112 8.15 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 451μs 175ns 677ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 595μs 180ns 698ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 823μs 3.12μs 14.9μs 0.403 0 0 3.3 KB
#5254 WriteAndFlushEnrichedTraces net6.0 488μs 295ns 1.14μs 0 0 0 2.7 KB
#5254 WriteAndFlushEnrichedTraces netcoreapp3.1 599μs 196ns 732ns 0 0 0 2.7 KB
#5254 WriteAndFlushEnrichedTraces net472 809μs 212ns 823ns 0.403 0 0 3.3 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 172μs 93.4ns 362ns 0.258 0 0 18.33 KB
master SendRequest netcoreapp3.1 190μs 282ns 1.09μs 0.19 0 0 20.49 KB
master SendRequest net472 0.000548ns 0.000273ns 0.00102ns 0 0 0 0 b
#5254 SendRequest net6.0 172μs 192ns 743ns 0.257 0 0 18.33 KB
#5254 SendRequest netcoreapp3.1 192μs 385ns 1.49μs 0.19 0 0 20.49 KB
#5254 SendRequest net472 0.000569ns 0.000267ns 0.00103ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #5254

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.42 KB 41.7 KB 282 B 0.68%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 556μs 622ns 2.41μs 0.558 0 0 41.42 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 654μs 574ns 2.15μs 0.329 0 0 41.71 KB
master WriteAndFlushEnrichedTraces net472 857μs 2.97μs 11.1μs 8.28 2.48 0.414 53.24 KB
#5254 WriteAndFlushEnrichedTraces net6.0 546μs 394ns 1.53μs 0.543 0 0 41.7 KB
#5254 WriteAndFlushEnrichedTraces netcoreapp3.1 656μs 869ns 3.01μs 0.324 0 0 41.83 KB
#5254 WriteAndFlushEnrichedTraces net472 874μs 4.22μs 16.9μs 8.08 2.55 0.425 53.26 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.17μs 0.785ns 2.94ns 0.0111 0 0 784 B
master ExecuteNonQuery netcoreapp3.1 1.52μs 1.04ns 4.04ns 0.0104 0 0 784 B
master ExecuteNonQuery net472 1.71μs 0.617ns 2.31ns 0.118 0 0 746 B
#5254 ExecuteNonQuery net6.0 1.16μs 0.413ns 1.49ns 0.0112 0 0 784 B
#5254 ExecuteNonQuery netcoreapp3.1 1.54μs 1.12ns 4.34ns 0.0101 0 0 784 B
#5254 ExecuteNonQuery net472 1.75μs 0.586ns 2.19ns 0.118 0 0 746 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.18μs 0.712ns 2.67ns 0.0143 0 0 1.01 KB
master CallElasticsearch netcoreapp3.1 1.64μs 2.57ns 9.94ns 0.0131 0 0 1.01 KB
master CallElasticsearch net472 2.49μs 2.08ns 8.04ns 0.161 0 0 1.02 KB
master CallElasticsearchAsync net6.0 1.28μs 0.858ns 3.32ns 0.0134 0 0 984 B
master CallElasticsearchAsync netcoreapp3.1 1.72μs 0.697ns 2.61ns 0.0145 0 0 1.06 KB
master CallElasticsearchAsync net472 2.58μs 0.997ns 3.73ns 0.17 0 0 1.08 KB
#5254 CallElasticsearch net6.0 1.27μs 1.16ns 4.32ns 0.014 0 0 1.01 KB
#5254 CallElasticsearch netcoreapp3.1 1.56μs 0.76ns 2.74ns 0.0132 0 0 1.01 KB
#5254 CallElasticsearch net472 2.51μs 1.39ns 5.37ns 0.162 0 0 1.02 KB
#5254 CallElasticsearchAsync net6.0 1.27μs 1.22ns 4.23ns 0.0139 0 0 984 B
#5254 CallElasticsearchAsync netcoreapp3.1 1.73μs 3.12ns 12.1ns 0.0138 0 0 1.06 KB
#5254 CallElasticsearchAsync net472 2.66μs 3.3ns 12.8ns 0.171 0 0 1.08 KB
Benchmarks.Trace.GraphQLBenchmark - Faster :tada: Same allocations :heavy_check_mark:

Faster :tada: in #5254

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync‑netcoreapp3.1 1.132 1,779.67 1,572.80

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.26μs 0.678ns 2.54ns 0.0126 0 0 928 B
master ExecuteAsync netcoreapp3.1 1.78μs 0.841ns 3.03ns 0.0124 0 0 928 B
master ExecuteAsync net472 1.9μs 0.596ns 2.31ns 0.141 0 0 891 B
#5254 ExecuteAsync net6.0 1.39μs 0.814ns 3.05ns 0.0126 0 0 928 B
#5254 ExecuteAsync netcoreapp3.1 1.57μs 0.561ns 2.1ns 0.0125 0 0 928 B
#5254 ExecuteAsync net472 1.91μs 0.921ns 3.45ns 0.142 0 0 891 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.06μs 2.09ns 7.82ns 0.0307 0 0 2.16 KB
master SendAsync netcoreapp3.1 4.94μs 2.49ns 8.63ns 0.037 0 0 2.7 KB
master SendAsync net472 7.84μs 2.04ns 7.89ns 0.533 0 0 3.38 KB
#5254 SendAsync net6.0 4.27μs 1.85ns 6.91ns 0.0299 0 0 2.16 KB
#5254 SendAsync netcoreapp3.1 5.03μs 3.6ns 13.5ns 0.0375 0 0 2.7 KB
#5254 SendAsync net472 7.83μs 2.85ns 11ns 0.536 0 0 3.38 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.55μs 0.784ns 3.04ns 0.0233 0 0 1.65 KB
master EnrichedLog netcoreapp3.1 2.31μs 2.79ns 10.4ns 0.0217 0 0 1.65 KB
master EnrichedLog net472 2.6μs 1.23ns 4.6ns 0.249 0 0 1.57 KB
#5254 EnrichedLog net6.0 1.49μs 0.896ns 3.35ns 0.0231 0 0 1.65 KB
#5254 EnrichedLog netcoreapp3.1 2.22μs 0.66ns 2.47ns 0.0225 0 0 1.65 KB
#5254 EnrichedLog net472 2.64μs 2.25ns 8.4ns 0.249 0 0 1.57 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 111μs 109ns 420ns 0 0 0 4.23 KB
master EnrichedLog netcoreapp3.1 118μs 94.8ns 367ns 0.0596 0 0 4.23 KB
master EnrichedLog net472 146μs 42.4ns 153ns 0.659 0.22 0 4.41 KB
#5254 EnrichedLog net6.0 112μs 103ns 401ns 0.0563 0 0 4.23 KB
#5254 EnrichedLog netcoreapp3.1 118μs 253ns 982ns 0 0 0 4.23 KB
#5254 EnrichedLog net472 146μs 70.5ns 273ns 0.659 0.22 0 4.41 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.08μs 1.53ns 5.73ns 0.031 0 0 2.21 KB
master EnrichedLog netcoreapp3.1 4.17μs 2.9ns 11.2ns 0.0293 0 0 2.21 KB
master EnrichedLog net472 4.86μs 1.71ns 6.61ns 0.319 0 0 2.02 KB
#5254 EnrichedLog net6.0 3.07μs 1.01ns 3.76ns 0.0307 0 0 2.21 KB
#5254 EnrichedLog netcoreapp3.1 4.19μs 1.39ns 4.82ns 0.0292 0 0 2.21 KB
#5254 EnrichedLog net472 4.99μs 1.33ns 4.98ns 0.32 0 0 2.02 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.38μs 2.59ns 10ns 0.0165 0 0 1.18 KB
master SendReceive netcoreapp3.1 1.88μs 1.14ns 4.43ns 0.0161 0 0 1.18 KB
master SendReceive net472 2.24μs 1.88ns 7.27ns 0.187 0 0 1.18 KB
#5254 SendReceive net6.0 1.44μs 0.608ns 2.28ns 0.0166 0 0 1.18 KB
#5254 SendReceive netcoreapp3.1 1.8μs 1.41ns 5.26ns 0.016 0 0 1.18 KB
#5254 SendReceive net472 2.32μs 1.9ns 7.36ns 0.187 0 0 1.18 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.72μs 8.02ns 31.1ns 0.0215 0 0 1.55 KB
master EnrichedLog netcoreapp3.1 3.79μs 1.35ns 4.86ns 0.0208 0 0 1.6 KB
master EnrichedLog net472 4.37μs 2.05ns 7.66ns 0.315 0 0 1.99 KB
#5254 EnrichedLog net6.0 2.72μs 1.06ns 4.1ns 0.0217 0 0 1.55 KB
#5254 EnrichedLog netcoreapp3.1 4μs 2.71ns 10.2ns 0.0218 0 0 1.6 KB
#5254 EnrichedLog net472 4.27μs 1.55ns 5.59ns 0.315 0 0 1.99 KB
Benchmarks.Trace.SpanBenchmark - Faster :tada: Same allocations :heavy_check_mark:

Faster :tada: in #5254

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑netcoreapp3.1 1.128 764.78 678.17

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 514ns 1.19ns 4.6ns 0.0077 0 0 552 B
master StartFinishSpan netcoreapp3.1 765ns 1.26ns 4.88ns 0.00722 0 0 552 B
master StartFinishSpan net472 718ns 1.3ns 5.05ns 0.0879 0 0 554 B
master StartFinishScope net6.0 591ns 0.953ns 3.69ns 0.00951 0 0 672 B
master StartFinishScope netcoreapp3.1 922ns 2.76ns 10.7ns 0.00912 0 0 672 B
master StartFinishScope net472 956ns 1.44ns 5.4ns 0.101 0 0 634 B
#5254 StartFinishSpan net6.0 506ns 0.172ns 0.642ns 0.00769 0 0 552 B
#5254 StartFinishSpan netcoreapp3.1 679ns 0.694ns 2.6ns 0.00736 0 0 552 B
#5254 StartFinishSpan net472 754ns 0.276ns 0.997ns 0.0878 0 0 554 B
#5254 StartFinishScope net6.0 595ns 0.229ns 0.826ns 0.00931 0 0 672 B
#5254 StartFinishScope netcoreapp3.1 912ns 0.298ns 1.15ns 0.00886 0 0 672 B
#5254 StartFinishScope net472 934ns 0.605ns 2.34ns 0.101 0 0 634 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #5254

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 1.187 576.44 684.46

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 576ns 0.967ns 3.75ns 0.00932 0 0 672 B
master RunOnMethodBegin netcoreapp3.1 938ns 1.96ns 7.59ns 0.009 0 0 672 B
master RunOnMethodBegin net472 1.05μs 1.96ns 7.35ns 0.101 0 0 634 B
#5254 RunOnMethodBegin net6.0 685ns 0.176ns 0.683ns 0.00955 0 0 672 B
#5254 RunOnMethodBegin netcoreapp3.1 1.05μs 0.537ns 2.08ns 0.00889 0 0 672 B
#5254 RunOnMethodBegin net472 1.02μs 0.714ns 2.67ns 0.1 0 0 634 B

andrewlock avatar Mar 19 '24 20:03 andrewlock