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

Anna/asm/test selective benchmarks

Open anna-git opened this issue 1 year ago • 7 comments

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

anna-git avatar Mar 07 '24 10:03 anna-git

Datadog Report

Branch report: anna/asm/test-selective-benchmarks Commit report: 9291799 Test service: dd-trace-dotnet

:white_check_mark: 0 Failed, 325815 Passed, 1589 Skipped, 35m 0.48s Wall Time

datadog-ddstaging[bot] avatar Mar 07 '24 10: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 (5281) - mean (72ms)  : 68, 76
     .   : milestone, 72,
    master - mean (74ms)  : 65, 83
     .   : milestone, 74,

    section CallTarget+Inlining+NGEN
    This PR (5281) - mean (997ms)  : 972, 1022
     .   : milestone, 997,
    master - mean (985ms)  : 961, 1008
     .   : milestone, 985,

gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5281) - mean (112ms)  : 109, 116
     .   : milestone, 112,
    master - mean (118ms)  : 96, 140
     .   : milestone, 118,

    section CallTarget+Inlining+NGEN
    This PR (5281) - mean (718ms)  : 690, 746
     .   : milestone, 718,
    master - mean (713ms)  : 691, 735
     .   : milestone, 713,

gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5281) - mean (94ms)  : 92, 96
     .   : milestone, 94,
    master - mean (95ms)  : 91, 98
     .   : milestone, 95,

    section CallTarget+Inlining+NGEN
    This PR (5281) - mean (669ms)  : 648, 690
     .   : milestone, 669,
    master - mean (671ms)  : 647, 694
     .   : milestone, 671,

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

    section CallTarget+Inlining+NGEN
    This PR (5281) - mean (1,069ms)  : 1039, 1098
     .   : milestone, 1069,
    master - mean (1,063ms)  : 1038, 1089
     .   : milestone, 1063,

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

    section CallTarget+Inlining+NGEN
    This PR (5281) - mean (871ms)  : 845, 896
     .   : milestone, 871,
    master - mean (861ms)  : 839, 884
     .   : milestone, 861,

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

    section CallTarget+Inlining+NGEN
    This PR (5281) - mean (854ms)  : 825, 883
     .   : milestone, 854,
    master - mean (855ms)  : 834, 876
     .   : milestone, 855,

andrewlock avatar Mar 07 '24 10:03 andrewlock

Benchmarks Report :snail:

Benchmarks for #5281 compared to master:

  • All benchmarks have the same speed
  • 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

andrewlock avatar Mar 07 '24 18:03 andrewlock

Benchmarks Report :snail:

Benchmarks for #5281 compared to master:

  • All benchmarks have the same speed
  • 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

andrewlock avatar Mar 08 '24 16:03 andrewlock

Benchmarks Report for 'tracer' :snail:

Benchmarks for #5281 compared to master:

  • All benchmarks have the same speed
  • 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

andrewlock avatar Mar 12 '24 12:03 andrewlock

Benchmarks Report for tracer :snail:

Benchmarks for #5281 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.154
  • 1 benchmarks are slower, with geometric mean 1.206
  • 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.78μs 50.2ns 362ns 0.0221 0.00884 0 7.48 KB
master StartStopWithChild netcoreapp3.1 10.7μs 60.9ns 444ns 0.036 0.0154 0.00514 7.59 KB
master StartStopWithChild net472 17.4μs 31ns 120ns 1.31 0.326 0.0944 7.95 KB
#5281 StartStopWithChild net6.0 8.85μs 47.6ns 256ns 0.0216 0.00864 0 7.49 KB
#5281 StartStopWithChild netcoreapp3.1 10.8μs 59.3ns 351ns 0.0315 0.0158 0.00525 7.58 KB
#5281 StartStopWithChild net472 17.1μs 46.7ns 181ns 1.34 0.377 0.12 7.95 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 447μs 130ns 469ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 609μs 288ns 1.12μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 803μs 512ns 1.98μs 0.403 0 0 3.3 KB
#5281 WriteAndFlushEnrichedTraces net6.0 448μs 182ns 657ns 0 0 0 2.7 KB
#5281 WriteAndFlushEnrichedTraces netcoreapp3.1 624μs 228ns 820ns 0 0 0 2.7 KB
#5281 WriteAndFlushEnrichedTraces net472 805μs 361ns 1.35μs 0.403 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 40.7μs 12.8ns 49.5ns 0.0206 0 0 2.36 KB
master AllCycleSimpleBody netcoreapp3.1 43.8μs 29.7ns 107ns 0.0219 0 0 2.34 KB
master AllCycleSimpleBody net472 46.5μs 19.6ns 75.8ns 0.373 0 0 2.41 KB
master AllCycleMoreComplexBody net6.0 217μs 125ns 468ns 0.108 0 0 9.84 KB
master AllCycleMoreComplexBody netcoreapp3.1 229μs 119ns 412ns 0.114 0 0 9.73 KB
master AllCycleMoreComplexBody net472 240μs 86.1ns 334ns 1.55 0 0 9.91 KB
master ObjectExtractorSimpleBody net6.0 145ns 0.0831ns 0.311ns 0.00394 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 221ns 0.21ns 0.785ns 0.0037 0 0 272 B
master ObjectExtractorSimpleBody net472 173ns 0.137ns 0.532ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 2.97μs 1.32ns 4.94ns 0.0537 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 4.16μs 3.14ns 12.2ns 0.0497 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 3.87μs 2.78ns 10.8ns 0.603 0.00578 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - 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 EncodeArgs net6.0 32.2μs 12.5ns 46.6ns 0.388 0 0 27.94 KB
master EncodeArgs netcoreapp3.1 47.1μs 35.5ns 133ns 0.375 0 0 27.94 KB
master EncodeArgs net472 60μs 40.3ns 156ns 4.43 0.0602 0 28.03 KB
master EncodeLegacyArgs net6.0 97.8μs 116ns 401ns 0.425 0 0 30.34 KB
master EncodeLegacyArgs netcoreapp3.1 127μs 439ns 1.58μs 0.306 0 0 30.34 KB
master EncodeLegacyArgs net472 179μs 100ns 387ns 4.82 0.357 0 30.44 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - 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 RunWafRealisticBenchmark net6.0 192μs 406ns 1.57μs 0.095 0 0 6.51 KB
master RunWafRealisticBenchmark netcoreapp3.1 204μs 313ns 1.21μs 0 0 0 6.49 KB
master RunWafRealisticBenchmark net472 224μs 150ns 582ns 1 0 0 6.59 KB
master RunWafRealisticBenchmarkWithAttack net6.0 127μs 67.1ns 251ns 0 0 0 4.15 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 136μs 226ns 874ns 0 0 0 4.14 KB
master RunWafRealisticBenchmarkWithAttack net472 148μs 48.2ns 187ns 0.666 0 0 4.19 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 168μs 111ns 431ns 0.168 0 0 18.3 KB
master SendRequest netcoreapp3.1 193μs 297ns 1.15μs 0.193 0 0 20.46 KB
master SendRequest net472 0.00116ns 0.000408ns 0.00158ns 0 0 0 0 b
#5281 SendRequest net6.0 169μs 80.8ns 313ns 0.169 0 0 18.3 KB
#5281 SendRequest netcoreapp3.1 193μs 318ns 1.23μs 0.193 0 0 20.46 KB
#5281 SendRequest net472 0.00149ns 0.000325ns 0.00117ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #5281

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.36 KB 41.87 KB 507 B 1.23%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 549μs 783ns 3.03μs 0.571 0 0 41.36 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 665μs 1.24μs 4.62μs 0.331 0 0 41.7 KB
master WriteAndFlushEnrichedTraces net472 835μs 2.56μs 9.9μs 8.33 2.5 0.417 53.25 KB
#5281 WriteAndFlushEnrichedTraces net6.0 553μs 263ns 1.02μs 0.532 0 0 41.87 KB
#5281 WriteAndFlushEnrichedTraces netcoreapp3.1 670μs 1.28μs 4.97μs 0.334 0 0 41.76 KB
#5281 WriteAndFlushEnrichedTraces net472 874μs 2.45μs 9.17μs 8.04 2.23 0.446 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.18μs 0.701ns 2.71ns 0.0107 0 0 776 B
master ExecuteNonQuery netcoreapp3.1 1.57μs 0.796ns 3.08ns 0.0102 0 0 776 B
master ExecuteNonQuery net472 1.72μs 1.35ns 4.67ns 0.117 0 0 738 B
#5281 ExecuteNonQuery net6.0 1.19μs 0.657ns 2.54ns 0.0107 0 0 776 B
#5281 ExecuteNonQuery netcoreapp3.1 1.48μs 0.721ns 2.6ns 0.0105 0 0 776 B
#5281 ExecuteNonQuery net472 1.8μs 4.72ns 18.3ns 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.29μs 0.966ns 3.74ns 0.0141 0 0 1 KB
master CallElasticsearch netcoreapp3.1 1.61μs 1.21ns 4.68ns 0.013 0 0 1 KB
master CallElasticsearch net472 2.43μs 1.2ns 4.47ns 0.16 0 0 1.01 KB
master CallElasticsearchAsync net6.0 1.25μs 0.744ns 2.88ns 0.0137 0 0 976 B
master CallElasticsearchAsync netcoreapp3.1 1.67μs 0.8ns 2.99ns 0.014 0 0 1.05 KB
master CallElasticsearchAsync net472 2.69μs 2.08ns 8.04ns 0.169 0 0 1.07 KB
#5281 CallElasticsearch net6.0 1.24μs 0.414ns 1.6ns 0.0136 0 0 1 KB
#5281 CallElasticsearch netcoreapp3.1 1.54μs 2.05ns 7.66ns 0.0138 0 0 1 KB
#5281 CallElasticsearch net472 2.5μs 1.4ns 5.24ns 0.16 0 0 1.01 KB
#5281 CallElasticsearchAsync net6.0 1.35μs 0.572ns 2.14ns 0.0135 0 0 976 B
#5281 CallElasticsearchAsync netcoreapp3.1 1.62μs 0.617ns 2.31ns 0.0137 0 0 1.05 KB
#5281 CallElasticsearchAsync net472 2.55μs 1.26ns 4.9ns 0.17 0 0 1.07 KB
Benchmarks.Trace.GraphQLBenchmark - Faster :tada: Same allocations :heavy_check_mark:

Faster :tada: in #5281

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync‑net6.0 1.158 1,424.31 1,229.82

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.42μs 1.39ns 5.19ns 0.0129 0 0 920 B
master ExecuteAsync netcoreapp3.1 1.69μs 0.671ns 2.51ns 0.0126 0 0 920 B
master ExecuteAsync net472 1.84μs 0.717ns 2.78ns 0.139 0 0 883 B
#5281 ExecuteAsync net6.0 1.23μs 1.89ns 7.3ns 0.0126 0 0 920 B
#5281 ExecuteAsync netcoreapp3.1 1.62μs 0.784ns 3.04ns 0.0121 0 0 920 B
#5281 ExecuteAsync net472 1.76μs 0.444ns 1.66ns 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.22μs 1.85ns 6.92ns 0.0295 0 0 2.15 KB
master SendAsync netcoreapp3.1 5.06μs 9.74ns 37.7ns 0.0351 0 0 2.69 KB
master SendAsync net472 7.72μs 4.7ns 18.2ns 0.535 0 0 3.37 KB
#5281 SendAsync net6.0 4.17μs 0.98ns 3.67ns 0.0294 0 0 2.15 KB
#5281 SendAsync netcoreapp3.1 4.95μs 3.86ns 13.9ns 0.037 0 0 2.69 KB
#5281 SendAsync net472 7.75μs 2ns 7.5ns 0.532 0 0 3.37 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - 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 StringConcatBenchmark net6.0 63.5μs 723ns 7.19μs 0 0 0 43.44 KB
master StringConcatBenchmark netcoreapp3.1 52.8μs 258ns 1.03μs 0 0 0 42.64 KB
master StringConcatBenchmark net472 37.5μs 71.1ns 256ns 0 0 0 62.09 KB
master StringConcatAspectBenchmark net6.0 267μs 687ns 3.83μs 0 0 0 214.24 KB
master StringConcatAspectBenchmark netcoreapp3.1 294μs 1.57μs 8.59μs 0 0 0 203.31 KB
master StringConcatAspectBenchmark net472 252μs 3.62μs 34.7μ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.42μs 0.538ns 1.86ns 0.0228 0 0 1.63 KB
master EnrichedLog netcoreapp3.1 2.28μs 0.707ns 2.55ns 0.0218 0 0 1.63 KB
master EnrichedLog net472 2.69μs 0.949ns 3.67ns 0.247 0 0 1.56 KB
#5281 EnrichedLog net6.0 1.45μs 0.85ns 3.18ns 0.0232 0 0 1.63 KB
#5281 EnrichedLog netcoreapp3.1 2.16μs 0.92ns 3.44ns 0.0216 0 0 1.63 KB
#5281 EnrichedLog net472 2.51μs 1.23ns 4.75ns 0.246 0 0 1.56 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 113ns 439ns 0.0563 0 0 4.22 KB
master EnrichedLog netcoreapp3.1 119μs 135ns 525ns 0 0 0 4.22 KB
master EnrichedLog net472 146μs 114ns 443ns 0.657 0.219 0 4.4 KB
#5281 EnrichedLog net6.0 113μs 107ns 415ns 0.0568 0 0 4.22 KB
#5281 EnrichedLog netcoreapp3.1 119μs 116ns 451ns 0 0 0 4.22 KB
#5281 EnrichedLog net472 146μs 60.5ns 227ns 0.655 0.218 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 2.9μs 1.4ns 5.23ns 0.0304 0 0 2.19 KB
master EnrichedLog netcoreapp3.1 4.29μs 1.73ns 6.49ns 0.0278 0 0 2.19 KB
master EnrichedLog net472 4.79μs 1.23ns 4.77ns 0.317 0 0 2.01 KB
#5281 EnrichedLog net6.0 2.92μs 1.19ns 4.45ns 0.0305 0 0 2.19 KB
#5281 EnrichedLog netcoreapp3.1 4.14μs 1.44ns 5.38ns 0.029 0 0 2.19 KB
#5281 EnrichedLog net472 4.78μs 1.14ns 4.27ns 0.317 0 0 2.01 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.47ns 5.5ns 0.0163 0 0 1.17 KB
master SendReceive netcoreapp3.1 1.69μs 0.985ns 3.82ns 0.0161 0 0 1.17 KB
master SendReceive net472 2.28μs 0.835ns 3.24ns 0.185 0 0 1.17 KB
#5281 SendReceive net6.0 1.5μs 0.538ns 2.01ns 0.0165 0 0 1.17 KB
#5281 SendReceive netcoreapp3.1 1.86μs 0.914ns 3.42ns 0.0157 0 0 1.17 KB
#5281 SendReceive net472 2.32μs 0.956ns 3.31ns 0.185 0 0 1.17 KB
Benchmarks.Trace.SerilogBenchmark - Faster :tada: Same allocations :heavy_check_mark:

Faster :tada: in #5281

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SerilogBenchmark.EnrichedLog‑net6.0 1.150 3,089.32 2,685.21

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 3.04μs 17.6ns 138ns 0.021 0 0 1.54 KB
master EnrichedLog netcoreapp3.1 3.86μs 2.43ns 9.4ns 0.0216 0 0 1.58 KB
master EnrichedLog net472 4.27μs 2.18ns 8.43ns 0.312 0 0 1.97 KB
#5281 EnrichedLog net6.0 2.69μs 0.6ns 2.32ns 0.0214 0 0 1.54 KB
#5281 EnrichedLog netcoreapp3.1 3.89μs 2ns 7.74ns 0.0215 0 0 1.58 KB
#5281 EnrichedLog net472 4.33μs 2.41ns 9.02ns 0.312 0 0 1.97 KB
Benchmarks.Trace.SpanBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #5281

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 1.206 463.31 558.60

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 463ns 0.162ns 0.605ns 0.00772 0 0 544 B
master StartFinishSpan netcoreapp3.1 721ns 0.327ns 1.22ns 0.00719 0 0 544 B
master StartFinishSpan net472 720ns 0.274ns 1.06ns 0.0865 0 0 546 B
master StartFinishScope net6.0 629ns 0.824ns 3.19ns 0.00917 0 0 664 B
master StartFinishScope netcoreapp3.1 868ns 0.298ns 1.11ns 0.00889 0 0 664 B
master StartFinishScope net472 927ns 0.253ns 0.98ns 0.0992 0 0 626 B
#5281 StartFinishSpan net6.0 558ns 0.437ns 1.63ns 0.00754 0 0 544 B
#5281 StartFinishSpan netcoreapp3.1 714ns 1.58ns 5.91ns 0.00714 0 0 544 B
#5281 StartFinishSpan net472 762ns 0.953ns 3.69ns 0.0867 0 0 546 B
#5281 StartFinishScope net6.0 620ns 0.997ns 3.86ns 0.00926 0 0 664 B
#5281 StartFinishScope netcoreapp3.1 866ns 0.863ns 3.34ns 0.00902 0 0 664 B
#5281 StartFinishScope net472 957ns 1.4ns 5.43ns 0.0995 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 651ns 0.539ns 2.09ns 0.00914 0 0 664 B
master RunOnMethodBegin netcoreapp3.1 946ns 1.51ns 5.66ns 0.00881 0 0 664 B
master RunOnMethodBegin net472 1.1μs 0.429ns 1.6ns 0.0994 0 0 626 B
#5281 RunOnMethodBegin net6.0 678ns 1.19ns 4.6ns 0.00919 0 0 664 B
#5281 RunOnMethodBegin netcoreapp3.1 879ns 1.47ns 5.71ns 0.00912 0 0 664 B
#5281 RunOnMethodBegin net472 1.08μs 1.76ns 6.8ns 0.0994 0 0 626 B

andrewlock avatar Mar 12 '24 14:03 andrewlock

Benchmarks Report for appsec :snail:

Benchmarks for #5281 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.146
  • 1 benchmarks are slower, with geometric mean 1.362
  • 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.Asm.AppSecBodyBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #5281

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody‑net472 1.362 165.00 224.74

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 40.7μs 54.9ns 213ns 0.0202 0 0 2.36 KB
master AllCycleSimpleBody netcoreapp3.1 44.4μs 89.9ns 348ns 0.0222 0 0 2.34 KB
master AllCycleSimpleBody net472 47.1μs 13.9ns 54ns 0.376 0 0 2.41 KB
master AllCycleMoreComplexBody net6.0 212μs 295ns 1.14μs 0.107 0 0 9.84 KB
master AllCycleMoreComplexBody netcoreapp3.1 227μs 483ns 1.87μs 0.112 0 0 9.73 KB
master AllCycleMoreComplexBody net472 241μs 117ns 453ns 1.56 0 0 9.91 KB
master ObjectExtractorSimpleBody net6.0 142ns 0.194ns 0.752ns 0.00396 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 211ns 0.105ns 0.393ns 0.00371 0 0 272 B
master ObjectExtractorSimpleBody net472 165ns 0.0821ns 0.296ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 2.99μs 2.05ns 7.93ns 0.0535 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 4.08μs 2.76ns 10.7ns 0.049 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 3.69μs 2.84ns 11ns 0.603 0.00553 0 3.8 KB
#5281 AllCycleSimpleBody net6.0 45μs 343ns 3.43μs 0.0243 0 0 2.36 KB
#5281 AllCycleSimpleBody netcoreapp3.1 44.3μs 81.6ns 316ns 0.0225 0 0 2.34 KB
#5281 AllCycleSimpleBody net472 47.5μs 28ns 105ns 0.379 0 0 2.41 KB
#5281 AllCycleMoreComplexBody net6.0 215μs 122ns 455ns 0.106 0 0 9.84 KB
#5281 AllCycleMoreComplexBody netcoreapp3.1 225μs 279ns 1.08μs 0.112 0 0 9.73 KB
#5281 AllCycleMoreComplexBody net472 240μs 65.2ns 252ns 1.56 0 0 9.91 KB
#5281 ObjectExtractorSimpleBody net6.0 145ns 0.14ns 0.542ns 0.00391 0 0 280 B
#5281 ObjectExtractorSimpleBody netcoreapp3.1 201ns 0.0885ns 0.343ns 0.00365 0 0 272 B
#5281 ObjectExtractorSimpleBody net472 225ns 0.132ns 0.511ns 0.0445 0 0 281 B
#5281 ObjectExtractorMoreComplexBody net6.0 3.02μs 3.96ns 15.3ns 0.0525 0 0 3.78 KB
#5281 ObjectExtractorMoreComplexBody netcoreapp3.1 4.01μs 1.73ns 6.71ns 0.0501 0 0 3.69 KB
#5281 ObjectExtractorMoreComplexBody net472 3.82μs 2.6ns 10.1ns 0.602 0.00573 0 3.8 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - 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 RunWafRealisticBenchmark net6.0 191μs 147ns 551ns 0.0948 0 0 6.51 KB
master RunWafRealisticBenchmark netcoreapp3.1 204μs 499ns 1.93μs 0 0 0 6.49 KB
master RunWafRealisticBenchmark net472 225μs 95.7ns 371ns 1.01 0 0 6.59 KB
master RunWafRealisticBenchmarkWithAttack net6.0 127μs 198ns 768ns 0.0631 0 0 4.15 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 134μs 141ns 548ns 0 0 0 4.14 KB
master RunWafRealisticBenchmarkWithAttack net472 147μs 69.2ns 268ns 0.661 0 0 4.19 KB
#5281 RunWafRealisticBenchmark net6.0 190μs 284ns 1.1μs 0.0954 0 0 6.51 KB
#5281 RunWafRealisticBenchmark netcoreapp3.1 205μs 270ns 1.04μs 0 0 0 6.49 KB
#5281 RunWafRealisticBenchmark net472 225μs 105ns 408ns 1.01 0 0 6.59 KB
#5281 RunWafRealisticBenchmarkWithAttack net6.0 127μs 101ns 391ns 0 0 0 4.15 KB
#5281 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 137μs 248ns 961ns 0 0 0 4.15 KB
#5281 RunWafRealisticBenchmarkWithAttack net472 148μs 60.6ns 235ns 0.663 0 0 4.19 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Faster :tada: More allocations :warning:

Faster :tada: in #5281

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 1.146 62,000.00 54,100.00 bimodal

More allocations :warning: in #5281

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 201.95 KB 213.03 KB 11.08 KB 5.49%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 61.6μs 804ns 8.04μs 0 0 0 43.44 KB
master StringConcatBenchmark netcoreapp3.1 61.6μs 673ns 6.56μs 0 0 0 42.64 KB
master StringConcatBenchmark net472 38.5μs 169ns 631ns 0 0 0 59.07 KB
master StringConcatAspectBenchmark net6.0 293μs 856ns 2.97μs 0 0 0 205.08 KB
master StringConcatAspectBenchmark netcoreapp3.1 302μs 1.46μs 5.64μs 0 0 0 201.95 KB
master StringConcatAspectBenchmark net472 234μs 2.44μs 22.7μs 0 0 0 221.18 KB
#5281 StringConcatBenchmark net6.0 59.3μs 721ns 7.14μs 0 0 0 43.44 KB
#5281 StringConcatBenchmark netcoreapp3.1 54.1μs 236ns 944ns 0 0 0 42.64 KB
#5281 StringConcatBenchmark net472 37.7μs 92.1ns 332ns 0 0 0 59.07 KB
#5281 StringConcatAspectBenchmark net6.0 277μs 1.24μs 4.47μs 0 0 0 204.83 KB
#5281 StringConcatAspectBenchmark netcoreapp3.1 285μs 1.47μs 7.64μs 0 0 0 213.03 KB
#5281 StringConcatAspectBenchmark net472 247μs 4.03μs 38.4μs 0 0 0 221.18 KB

andrewlock avatar Mar 13 '24 19:03 andrewlock