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

Refacto: Make ContainerMetadata an instance class

Open vandonr opened this issue 1 month ago • 3 comments

Summary of changes

Everything in that class is public static, and it makes more sense to have it as an instance for testability.

Reason for change

Implementation details

Kept the backing fields as static lazy values, to avoid building them twice. In the context of tests, one would create an override/mock and set the values that way.

I didn't really inject it anywhere though, it'd only make sense in the context of tests. I could take the opportunity to add tests, but also, I'm doing this to add an extra field to the container metadata, so I can do the work then ?

Test coverage

existing tests

Other details

vandonr avatar Dec 03 '25 15:12 vandonr

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: b66cc91 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

Benchmarks

Benchmarks Report for benchmark platform :snail:

Benchmarks for #7898 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.140
  • 3 benchmarks are slower, with geometric mean 1.641
  • 3 benchmarks have fewer allocations
  • 30 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 10.4μs 55.8ns 296ns 0 0 0 5.49 KB
master StartStopWithChild netcoreapp3.1 13.7μs 68.9ns 300ns 0 0 0 5.71 KB
master StartStopWithChild net472 21.9μs 90.8ns 340ns 0.904 0.339 0 6.01 KB
#7898 StartStopWithChild net6.0 11μs 61.5ns 384ns 0 0 0 5.49 KB
#7898 StartStopWithChild netcoreapp3.1 14.4μs 72.5ns 332ns 0 0 0 5.71 KB
#7898 StartStopWithChild net472 22.2μs 94.2ns 353ns 0.877 0.219 0 6 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 1.28ms 110ns 410ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.37ms 97ns 363ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.72ms 205ns 794ns 0 0 0 3.26 KB
#7898 WriteAndFlushEnrichedTraces net6.0 1.27ms 657ns 2.55μs 0 0 0 2.7 KB
#7898 WriteAndFlushEnrichedTraces netcoreapp3.1 1.41ms 3.38μs 13.1μs 0 0 0 2.7 KB
#7898 WriteAndFlushEnrichedTraces net472 1.7ms 324ns 1.17μs 0 0 0 3.26 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 1.14μs 6.25ns 37ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.38μs 7.92ns 53.7ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.37ns 1.39ns 0.195 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.41μs 36.9ns 165ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 8.97μs 42.5ns 175ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.72μs 4.4ns 16.5ns 0.732 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 327ns 1.84ns 11.5ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 400ns 2.25ns 13.9ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 304ns 0.076ns 0.294ns 0.0444 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.6μs 29ns 112ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.98μs 6.04ns 23.4ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.79μs 3.38ns 12.2ns 0.577 0 0 3.8 KB
#7898 AllCycleSimpleBody net6.0 1.09μs 5.59ns 26.2ns 0 0 0 1.22 KB
#7898 AllCycleSimpleBody netcoreapp3.1 1.43μs 7.98ns 54.1ns 0 0 0 1.2 KB
#7898 AllCycleSimpleBody net472 1.09μs 4.58ns 17.8ns 0.194 0 0 1.23 KB
#7898 AllCycleMoreComplexBody net6.0 7.21μs 32.6ns 130ns 0 0 0 4.72 KB
#7898 AllCycleMoreComplexBody netcoreapp3.1 9.03μs 45.6ns 209ns 0 0 0 4.62 KB
#7898 AllCycleMoreComplexBody net472 7.69μs 3.75ns 14.5ns 0.728 0 0 4.74 KB
#7898 ObjectExtractorSimpleBody net6.0 314ns 1.75ns 9.25ns 0 0 0 280 B
#7898 ObjectExtractorSimpleBody netcoreapp3.1 403ns 1.86ns 7.42ns 0 0 0 272 B
#7898 ObjectExtractorSimpleBody net472 299ns 0.0353ns 0.132ns 0.0436 0 0 281 B
#7898 ObjectExtractorMoreComplexBody net6.0 6.3μs 31.1ns 128ns 0 0 0 3.78 KB
#7898 ObjectExtractorMoreComplexBody netcoreapp3.1 7.78μs 39.3ns 176ns 0 0 0 3.69 KB
#7898 ObjectExtractorMoreComplexBody net472 6.82μs 2.83ns 10.9ns 0.578 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed :heavy_check_mark: Fewer allocations :tada:

Fewer allocations :tada: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs‑net6.0 2.16 KB 2.14 KB -18 B -0.83%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 76.1μs 292ns 1.09μs 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.1μs 251ns 971ns 0 0 0 32.4 KB
master EncodeArgs net472 108μs 10.3ns 39.8ns 4.89 0 0 32.5 KB
master EncodeLegacyArgs net6.0 143μs 47.5ns 171ns 0 0 0 2.16 KB
master EncodeLegacyArgs netcoreapp3.1 198μs 331ns 1.28μs 0 0 0 2.14 KB
master EncodeLegacyArgs net472 264μs 42.8ns 166ns 0 0 0 2.14 KB
#7898 EncodeArgs net6.0 77.5μs 72.2ns 260ns 0 0 0 32.4 KB
#7898 EncodeArgs netcoreapp3.1 99.3μs 191ns 739ns 0 0 0 32.4 KB
#7898 EncodeArgs net472 109μs 8.93ns 34.6ns 4.9 0 0 32.5 KB
#7898 EncodeLegacyArgs net6.0 148μs 16.7ns 60.2ns 0 0 0 2.14 KB
#7898 EncodeLegacyArgs netcoreapp3.1 197μs 35.9ns 139ns 0 0 0 2.14 KB
#7898 EncodeLegacyArgs net472 262μs 22.8ns 88.1ns 0 0 0 2.14 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 423μs 2.03μs 11.3μs 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 466μs 2.78μs 26.3μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 486μs 426ns 1.54μs 0 0 0 0 b
master RunWafRealisticBenchmarkWithAttack net6.0 305μs 887ns 3.2μs 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 329μs 1.38μs 5.16μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 366μs 271ns 976ns 0 0 0 0 b
#7898 RunWafRealisticBenchmark net6.0 438μs 840ns 2.91μs 0 0 0 4.55 KB
#7898 RunWafRealisticBenchmark netcoreapp3.1 463μs 1.81μs 6.27μs 0 0 0 4.48 KB
#7898 RunWafRealisticBenchmark net472 499μs 715ns 2.77μs 0 0 0 0 b
#7898 RunWafRealisticBenchmarkWithAttack net6.0 318μs 829ns 2.99μs 0 0 0 2.24 KB
#7898 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 336μs 1.74μs 7.97μs 0 0 0 2.22 KB
#7898 RunWafRealisticBenchmarkWithAttack net472 373μs 566ns 2.19μs 0 0 0 0 b
Benchmarks.Trace.AspNetCoreBenchmark - Unknown :shrug: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 84.1μs 165ns 638ns 0 0 0 18.97 KB
master SendRequest netcoreapp3.1 98.4μs 397ns 1.9μs 0 0 0 21.34 KB
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#7898 SendRequest net6.0 84.7μs 267ns 964ns 0 0 0 19.03 KB
#7898 SendRequest netcoreapp3.1 97μs 98.5ns 368ns 0 0 0 21.37 KB
#7898 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #7898

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 2.322 853,800.00 1,982,600.00
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑netcoreapp3.1 1.654 1,698,800.00 2,809,300.00
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 1.151 1,375,100.00 1,582,800.00

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.98ms 653ns 2.44μs 0 0 0 640 KB
master OriginalCharSlice netcoreapp3.1 3.92ms 1.18μs 4.43μs 0 0 0 640 KB
master OriginalCharSlice net472 2.71ms 365ns 1.31μs 0 0 0 638.98 KB
master OptimizedCharSlice net6.0 1.38ms 973ns 3.77μs 0 0 0 0 b
master OptimizedCharSlice netcoreapp3.1 1.71ms 9.48μs 60.7μs 0 0 0 0 b
master OptimizedCharSlice net472 2.06ms 642ns 2.49μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 1.01ms 559ns 2.17μs 0 0 0 0 b
master OptimizedCharSliceWithPool netcoreapp3.1 853μs 301ns 2.04μs 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.21ms 295ns 1.14μs 0 0 0 0 b
#7898 OriginalCharSlice net6.0 1.91ms 1.17μs 4.23μs 0 0 0 640 KB
#7898 OriginalCharSlice netcoreapp3.1 3.96ms 11.4μs 42.5μs 0 0 0 640.05 KB
#7898 OriginalCharSlice net472 2.72ms 572ns 2.06μs 0 0 0 638.98 KB
#7898 OptimizedCharSlice net6.0 1.58ms 954ns 3.7μs 0 0 0 0 b
#7898 OptimizedCharSlice netcoreapp3.1 2.81ms 938ns 3.63μs 0 0 0 0 b
#7898 OptimizedCharSlice net472 1.9ms 267ns 964ns 0 0 0 0 b
#7898 OptimizedCharSliceWithPool net6.0 1.02ms 446ns 1.67μs 0 0 0 0 b
#7898 OptimizedCharSliceWithPool netcoreapp3.1 1.98ms 1.8μs 6.95μs 0 0 0 0 b
#7898 OptimizedCharSliceWithPool net472 1.15ms 331ns 1.28μs 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster :tada: More allocations :warning:

Faster :tada: in #7898

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 1.140 967,817.79 849,281.64

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 55.73 KB 56.07 KB 339 B 0.61%

Fewer allocations :tada: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 43.15 KB 42.28 KB -868 B -2.01%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 655μs 3.22μs 13.3μs 0 0 0 41.77 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 795μs 4.42μs 26.5μs 0 0 0 43.15 KB
master WriteAndFlushEnrichedTraces net472 967μs 3.42μs 12.8μs 4.81 0 0 55.73 KB
#7898 WriteAndFlushEnrichedTraces net6.0 718μs 1.11μs 4.29μs 0 0 0 41.75 KB
#7898 WriteAndFlushEnrichedTraces netcoreapp3.1 767μs 4.42μs 34.3μs 0 0 0 42.28 KB
#7898 WriteAndFlushEnrichedTraces net472 847μs 3.88μs 14.5μs 7.81 3.91 0 56.07 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery‑net472 931 B 987 B 56 B 6.02%
Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery‑netcoreapp3.1 960 B 1.02 KB 56 B 5.83%
Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery‑net6.0 968 B 1.02 KB 56 B 5.79%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.89μs 4.95ns 19.2ns 0 0 0 968 B
master ExecuteNonQuery netcoreapp3.1 2.42μs 9.13ns 35.4ns 0 0 0 960 B
master ExecuteNonQuery net472 2.63μs 3.05ns 11.4ns 0.147 0 0 931 B
#7898 ExecuteNonQuery net6.0 1.97μs 3.57ns 13.8ns 0 0 0 1.02 KB
#7898 ExecuteNonQuery netcoreapp3.1 2.61μs 3.28ns 12.7ns 0 0 0 1.02 KB
#7898 ExecuteNonQuery net472 2.76μs 5.18ns 20.1ns 0.149 0 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync‑net6.0 928 B 984 B 56 B 6.03%
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch‑net6.0 952 B 1.01 KB 56 B 5.88%
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch‑net472 955 B 1.01 KB 56 B 5.86%
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch‑netcoreapp3.1 968 B 1.02 KB 56 B 5.79%
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync‑net472 1.01 KB 1.07 KB 56 B 5.54%
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync‑netcoreapp3.1 1.02 KB 1.07 KB 56 B 5.51%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.64μs 8.49ns 41.6ns 0 0 0 952 B
master CallElasticsearch netcoreapp3.1 2.16μs 8.7ns 33.7ns 0 0 0 968 B
master CallElasticsearch net472 3.42μs 5.5ns 21.3ns 0.136 0 0 955 B
master CallElasticsearchAsync net6.0 1.76μs 3.13ns 11.3ns 0 0 0 928 B
master CallElasticsearchAsync netcoreapp3.1 2.28μs 10.8ns 44.7ns 0 0 0 1.02 KB
master CallElasticsearchAsync net472 3.54μs 3.34ns 12.5ns 0.16 0 0 1.01 KB
#7898 CallElasticsearch net6.0 1.71μs 7.99ns 30.9ns 0 0 0 1.01 KB
#7898 CallElasticsearch netcoreapp3.1 2.34μs 7.81ns 30.3ns 0 0 0 1.02 KB
#7898 CallElasticsearch net472 3.46μs 5.94ns 23ns 0.155 0 0 1.01 KB
#7898 CallElasticsearchAsync net6.0 1.72μs 8.76ns 38.2ns 0 0 0 984 B
#7898 CallElasticsearchAsync netcoreapp3.1 2.46μs 7.84ns 29.3ns 0 0 0 1.07 KB
#7898 CallElasticsearchAsync net472 3.51μs 2.99ns 10.8ns 0.159 0 0 1.07 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync‑net472 859 B 915 B 56 B 6.52%
Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync‑net6.0 896 B 952 B 56 B 6.25%
Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync‑netcoreapp3.1 896 B 952 B 56 B 6.25%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.89μs 0.552ns 1.99ns 0 0 0 896 B
master ExecuteAsync netcoreapp3.1 2.37μs 9.03ns 35ns 0 0 0 896 B
master ExecuteAsync net472 2.55μs 2.78ns 10.8ns 0.128 0 0 859 B
#7898 ExecuteAsync net6.0 1.84μs 7.01ns 27.2ns 0 0 0 952 B
#7898 ExecuteAsync netcoreapp3.1 2.42μs 9.26ns 35.9ns 0 0 0 952 B
#7898 ExecuteAsync net472 2.62μs 1.29ns 5ns 0.132 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.HttpClientBenchmark.SendAsync‑net6.0 2.29 KB 2.34 KB 56 B 2.45%
Benchmarks.Trace.HttpClientBenchmark.SendAsync‑netcoreapp3.1 2.83 KB 2.89 KB 56 B 1.98%
Benchmarks.Trace.HttpClientBenchmark.SendAsync‑net472 3.08 KB 3.14 KB 56 B 1.82%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.59μs 18.9ns 68.2ns 0 0 0 2.29 KB
master SendAsync netcoreapp3.1 8.38μs 24.9ns 96.3ns 0 0 0 2.83 KB
master SendAsync net472 12μs 10.7ns 41.3ns 0.478 0 0 3.08 KB
#7898 SendAsync net6.0 6.73μs 8.22ns 30.8ns 0 0 0 2.34 KB
#7898 SendAsync netcoreapp3.1 8.23μs 9.74ns 37.7ns 0 0 0 2.89 KB
#7898 SendAsync net472 12.2μs 6.69ns 25ns 0.487 0 0 3.14 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 250.07 KB 274.09 KB 24.02 KB 9.60%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 247.43 KB 257.54 KB 10.11 KB 4.09%

Fewer allocations :tada: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 273.72 KB 270.34 KB -3.38 KB -1.24%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 47.1μs 591ns 5.64μs 0 0 0 42.51 KB
master StringConcatBenchmark netcoreapp3.1 48.1μs 237ns 1.01μs 0 0 0 42.54 KB
master StringConcatBenchmark net472 59.3μs 289ns 1.15μs 0 0 0 49.15 KB
master StringConcatAspectBenchmark net6.0 463μs 2.42μs 12.4μs 0 0 0 250.07 KB
master StringConcatAspectBenchmark netcoreapp3.1 499μs 1.92μs 7.44μs 0 0 0 247.43 KB
master StringConcatAspectBenchmark net472 401μs 2.05μs 14.9μs 0 0 0 273.72 KB
#7898 StringConcatBenchmark net6.0 41.2μs 162ns 629ns 0 0 0 42.51 KB
#7898 StringConcatBenchmark netcoreapp3.1 52.5μs 469ns 4.52μs 0 0 0 42.54 KB
#7898 StringConcatBenchmark net472 56.6μs 282ns 1.16μs 0 0 0 49.15 KB
#7898 StringConcatAspectBenchmark net6.0 470μs 2.26μs 9.87μs 0 0 0 274.09 KB
#7898 StringConcatAspectBenchmark netcoreapp3.1 491μs 2.62μs 14.1μs 0 0 0 257.54 KB
#7898 StringConcatAspectBenchmark net472 417μs 2.37μs 16.6μs 0 0 0 270.34 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.66μs 12.1ns 48.5ns 0 0 0 1.69 KB
master EnrichedLog netcoreapp3.1 3.63μs 12.9ns 50ns 0 0 0 1.7 KB
master EnrichedLog net472 3.8μs 3.12ns 11.7ns 0.248 0 0 1.6 KB
#7898 EnrichedLog net6.0 2.66μs 7.81ns 30.2ns 0 0 0 1.69 KB
#7898 EnrichedLog netcoreapp3.1 3.49μs 16.1ns 64.5ns 0 0 0 1.7 KB
#7898 EnrichedLog net472 3.82μs 5.65ns 21.9ns 0.247 0 0 1.6 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 123μs 59.3ns 222ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 127μs 213ns 767ns 0 0 0 4.31 KB
master EnrichedLog net472 166μs 49.5ns 192ns 0 0 0 4.51 KB
#7898 EnrichedLog net6.0 121μs 42.5ns 159ns 0 0 0 4.31 KB
#7898 EnrichedLog netcoreapp3.1 129μs 274ns 1.03μs 0 0 0 4.31 KB
#7898 EnrichedLog net472 166μs 30ns 116ns 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 4.97μs 18.5ns 69.4ns 0 0 0 2.24 KB
master EnrichedLog netcoreapp3.1 6.72μs 18.2ns 70.7ns 0 0 0 2.26 KB
master EnrichedLog net472 7.62μs 3.24ns 12.6ns 0.304 0 0 2.05 KB
#7898 EnrichedLog net6.0 5.09μs 3.58ns 12.9ns 0 0 0 2.24 KB
#7898 EnrichedLog netcoreapp3.1 6.74μs 16.5ns 64.1ns 0 0 0 2.26 KB
#7898 EnrichedLog net472 7.61μs 4.71ns 18.2ns 0.303 0 0 2.05 KB
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.RedisBenchmark.SendReceive‑net472 1.12 KB 1.17 KB 56 B 5.02%
Benchmarks.Trace.RedisBenchmark.SendReceive‑net6.0 1.12 KB 1.18 KB 56 B 5.00%
Benchmarks.Trace.RedisBenchmark.SendReceive‑netcoreapp3.1 1.14 KB 1.19 KB 56 B 4.93%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.91μs 8.46ns 31.6ns 0 0 0 1.12 KB
master SendReceive netcoreapp3.1 2.58μs 10.7ns 41.3ns 0 0 0 1.14 KB
master SendReceive net472 2.97μs 2.29ns 8.57ns 0.164 0 0 1.12 KB
#7898 SendReceive net6.0 1.95μs 9.6ns 38.4ns 0 0 0 1.18 KB
#7898 SendReceive netcoreapp3.1 2.57μs 11.7ns 46.7ns 0 0 0 1.19 KB
#7898 SendReceive net472 3μs 2.06ns 7.72ns 0.18 0 0 1.17 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.39μs 1.78ns 6.41ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 6.19μs 13.9ns 53.7ns 0 0 0 1.63 KB
master EnrichedLog net472 6.81μs 7.88ns 30.5ns 0.304 0 0 2.03 KB
#7898 EnrichedLog net6.0 4.5μs 19.5ns 70.3ns 0 0 0 1.58 KB
#7898 EnrichedLog netcoreapp3.1 5.66μs 11.5ns 44.7ns 0 0 0 1.63 KB
#7898 EnrichedLog net472 6.66μs 7.09ns 27.5ns 0.299 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 520 B 576 B 56 B 10.77%
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑netcoreapp3.1 520 B 576 B 56 B 10.77%
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472 522 B 578 B 56 B 10.73%
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net472 602 B 658 B 56 B 9.30%
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net6.0 640 B 696 B 56 B 8.75%
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑netcoreapp3.1 640 B 696 B 56 B 8.75%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 767ns 1.89ns 7.33ns 0 0 0 520 B
master StartFinishSpan netcoreapp3.1 947ns 4.93ns 25.1ns 0 0 0 520 B
master StartFinishSpan net472 892ns 0.0506ns 0.196ns 0.0808 0 0 522 B
master StartFinishScope net6.0 916ns 4.25ns 17.5ns 0 0 0 640 B
master StartFinishScope netcoreapp3.1 1.14μs 5.74ns 25ns 0 0 0 640 B
master StartFinishScope net472 1.09μs 0.15ns 0.542ns 0.0928 0 0 602 B
master StartFinishTwoScopes net6.0 1.79μs 1.45ns 5.62ns 0 0 0 1.19 KB
master StartFinishTwoScopes netcoreapp3.1 2.19μs 9.43ns 36.5ns 0 0 0 1.19 KB
master StartFinishTwoScopes net472 2.14μs 3.45ns 13.3ns 0.161 0 0 1.08 KB
#7898 StartFinishSpan net6.0 798ns 0.16ns 0.577ns 0 0 0 576 B
#7898 StartFinishSpan netcoreapp3.1 959ns 4.88ns 22.4ns 0 0 0 576 B
#7898 StartFinishSpan net472 905ns 0.17ns 0.612ns 0.0907 0 0 578 B
#7898 StartFinishScope net6.0 917ns 4.54ns 18.2ns 0 0 0 696 B
#7898 StartFinishScope netcoreapp3.1 1.17μs 5.1ns 19.1ns 0 0 0 696 B
#7898 StartFinishScope net472 1.1μs 0.66ns 2.56ns 0.104 0 0 658 B
#7898 StartFinishTwoScopes net6.0 1.78μs 4.07ns 15.8ns 0 0 0 1.19 KB
#7898 StartFinishTwoScopes netcoreapp3.1 2.2μs 11.8ns 62.2ns 0 0 0 1.19 KB
#7898 StartFinishTwoScopes net472 2.11μs 1.34ns 5.17ns 0.167 0 0 1.08 KB
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7898

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net472 602 B 658 B 56 B 9.30%
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 640 B 696 B 56 B 8.75%
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑netcoreapp3.1 640 B 696 B 56 B 8.75%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.04μs 4.92ns 20.3ns 0 0 0 640 B
master RunOnMethodBegin netcoreapp3.1 1.36μs 6.96ns 31.9ns 0 0 0 640 B
master RunOnMethodBegin net472 1.43μs 0.869ns 3.25ns 0.0934 0 0 602 B
#7898 RunOnMethodBegin net6.0 1.07μs 5.18ns 20.7ns 0 0 0 696 B
#7898 RunOnMethodBegin netcoreapp3.1 1.44μs 7.2ns 30.6ns 0 0 0 696 B
#7898 RunOnMethodBegin net472 1.45μs 0.2ns 0.776ns 0.101 0 0 658 B

pr-commenter[bot] avatar Dec 03 '25 16:12 pr-commenter[bot]

Execution-Time Benchmarks Report :stopwatch:

Execution-time results for samples comparing This PR (7898) and master.

⚠️ Potential regressions detected

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration68.13 ± (68.13 - 68.35) ms73.86 ± (73.92 - 74.29) ms+8.4%❌⬆️
.NET Framework 4.8 - Bailout
duration71.94 ± (71.81 - 72.01) ms77.39 ± (77.26 - 77.62) ms+7.6%❌⬆️
Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration68.13 ± (68.13 - 68.35) ms73.86 ± (73.92 - 74.29) ms+8.4%❌⬆️
.NET Framework 4.8 - Bailout
duration71.94 ± (71.81 - 72.01) ms77.39 ± (77.26 - 77.62) ms+7.6%❌⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1001.47 ± (1007.97 - 1017.63) ms1044.16 ± (1047.36 - 1055.10) ms+4.3%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms21.96 ± (21.94 - 21.99) ms22.83 ± (22.79 - 22.86) ms+3.9%✅⬆️
process.time_to_main_ms78.40 ± (78.23 - 78.56) ms84.65 ± (84.46 - 84.83) ms+8.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.91 ± (10.90 - 10.91) MB10.91 ± (10.91 - 10.92) MB+0.0%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms21.90 ± (21.88 - 21.92) ms22.76 ± (22.71 - 22.80) ms+3.9%✅⬆️
process.time_to_main_ms79.42 ± (79.33 - 79.52) ms85.56 ± (85.35 - 85.76) ms+7.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.94 - 10.94) MB10.96 ± (10.95 - 10.96) MB+0.2%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms211.56 ± (209.85 - 213.28) ms219.03 ± (217.80 - 220.26) ms+3.5%✅⬆️
process.time_to_main_ms471.87 ± (471.29 - 472.45) ms493.96 ± (493.25 - 494.67) ms+4.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.05 ± (48.03 - 48.07) MB48.13 ± (48.11 - 48.16) MB+0.2%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms20.59 ± (20.55 - 20.62) ms21.43 ± (21.39 - 21.47) ms+4.1%✅⬆️
process.time_to_main_ms67.89 ± (67.74 - 68.03) ms72.86 ± (72.72 - 73.00) ms+7.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.62 - 10.62) MB10.63 ± (10.63 - 10.64) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms20.51 ± (20.49 - 20.54) ms21.38 ± (21.34 - 21.42) ms+4.2%✅⬆️
process.time_to_main_ms68.69 ± (68.64 - 68.75) ms74.03 ± (73.87 - 74.20) ms+7.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.68 ± (10.68 - 10.69) MB10.68 ± (10.67 - 10.68) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms201.55 ± (200.42 - 202.69) ms205.55 ± (204.54 - 206.55) ms+2.0%✅⬆️
process.time_to_main_ms440.63 ± (439.88 - 441.38) ms458.22 ± (457.45 - 458.98) ms+4.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.41 ± (48.36 - 48.47) MB48.56 ± (48.54 - 48.59) MB+0.3%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.1%
.NET 8 - Baseline
process.internal_duration_ms18.80 ± (18.78 - 18.82) ms19.57 ± (19.54 - 19.61) ms+4.1%✅⬆️
process.time_to_main_ms67.01 ± (66.91 - 67.11) ms72.24 ± (72.06 - 72.41) ms+7.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.69 ± (7.68 - 7.70) MB7.68 ± (7.67 - 7.69) MB-0.1%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms18.76 ± (18.73 - 18.78) ms19.71 ± (19.66 - 19.76) ms+5.1%✅⬆️
process.time_to_main_ms67.95 ± (67.89 - 68.02) ms74.19 ± (74.03 - 74.36) ms+9.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.73 ± (7.72 - 7.74) MB7.72 ± (7.72 - 7.73) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms178.28 ± (177.29 - 179.26) ms187.72 ± (186.89 - 188.54) ms+5.3%✅⬆️
process.time_to_main_ms421.86 ± (421.31 - 422.41) ms444.00 ± (443.36 - 444.63) ms+5.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.26 ± (36.22 - 36.30) MB36.40 ± (36.36 - 36.44) MB+0.4%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.4%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration193.44 ± (193.61 - 194.53) ms194.60 ± (194.32 - 195.14) ms+0.6%✅⬆️
.NET Framework 4.8 - Bailout
duration196.93 ± (196.66 - 197.21) ms198.76 ± (198.61 - 199.42) ms+0.9%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1108.26 ± (1109.47 - 1116.57) ms1129.20 ± (1129.13 - 1137.72) ms+1.9%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms188.24 ± (187.80 - 188.68) ms189.39 ± (188.97 - 189.81) ms+0.6%✅⬆️
process.time_to_main_ms80.54 ± (80.34 - 80.74) ms81.38 ± (81.16 - 81.59) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.08 - 16.14) MB16.13 ± (16.11 - 16.16) MB+0.2%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.6%
.NET Core 3.1 - Bailout
process.internal_duration_ms187.26 ± (186.95 - 187.57) ms192.51 ± (192.00 - 193.01) ms+2.8%✅⬆️
process.time_to_main_ms81.81 ± (81.68 - 81.94) ms84.27 ± (84.05 - 84.49) ms+3.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.13 ± (16.10 - 16.16) MB16.05 ± (16.04 - 16.07) MB-0.5%
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)-0.2%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms398.33 ± (395.71 - 400.96) ms400.61 ± (397.95 - 403.27) ms+0.6%✅⬆️
process.time_to_main_ms476.18 ± (475.48 - 476.89) ms481.59 ± (480.72 - 482.46) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.66 ± (58.52 - 58.79) MB58.87 ± (58.75 - 58.99) MB+0.4%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.2%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms191.96 ± (191.55 - 192.38) ms194.53 ± (194.12 - 194.94) ms+1.3%✅⬆️
process.time_to_main_ms69.95 ± (69.76 - 70.14) ms70.71 ± (70.49 - 70.92) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.96 ± (15.81 - 16.11) MB16.39 ± (16.36 - 16.42) MB+2.7%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 19)19 ± (19 - 19)+4.3%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms191.01 ± (190.74 - 191.28) ms195.32 ± (194.82 - 195.82) ms+2.3%✅⬆️
process.time_to_main_ms70.83 ± (70.74 - 70.92) ms72.27 ± (72.09 - 72.45) ms+2.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.16 ± (16.03 - 16.30) MB16.39 ± (16.33 - 16.44) MB+1.4%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (20 - 20)+3.7%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms412.12 ± (409.68 - 414.56) ms409.49 ± (407.84 - 411.13) ms-0.6%
process.time_to_main_ms444.71 ± (443.94 - 445.49) ms448.74 ± (448.08 - 449.40) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.24 ± (59.11 - 59.36) MB59.20 ± (59.08 - 59.33) MB-0.1%
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms189.55 ± (189.25 - 189.84) ms190.28 ± (190.01 - 190.55) ms+0.4%✅⬆️
process.time_to_main_ms69.08 ± (68.91 - 69.25) ms69.72 ± (69.55 - 69.89) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.68 ± (11.66 - 11.71) MB11.74 ± (11.71 - 11.77) MB+0.5%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.1%
.NET 8 - Bailout
process.internal_duration_ms190.20 ± (189.78 - 190.61) ms193.02 ± (192.52 - 193.52) ms+1.5%✅⬆️
process.time_to_main_ms70.35 ± (70.23 - 70.47) ms71.74 ± (71.56 - 71.92) ms+2.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.77 ± (11.74 - 11.80) MB11.75 ± (11.73 - 11.77) MB-0.2%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.2%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms363.94 ± (362.59 - 365.29) ms369.74 ± (368.01 - 371.47) ms+1.6%✅⬆️
process.time_to_main_ms426.63 ± (426.06 - 427.19) ms436.08 ± (434.93 - 437.22) ms+2.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.96 ± (47.93 - 47.99) MB48.02 ± (47.99 - 48.05) MB+0.1%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.6%
Comparison explanation

Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (74ms)  : 71, 77
    master - mean (68ms)  : 67, 70

    section Bailout
    This PR (7898) - mean (77ms)  : crit, 76, 79
    master - mean (72ms)  : 71, 73

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (1,051ms)  : 996, 1107
    master - mean (1,013ms)  : 941, 1084

FakeDbCommand (.NET Core 3.1)
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (114ms)  : 110, 119
    master - mean (106ms)  : 103, 108

    section Bailout
    This PR (7898) - mean (115ms)  : crit, 112, 118
    master - mean (106ms)  : 105, 107

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (749ms)  : 719, 778
    master - mean (709ms)  : 681, 737

FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (101ms)  : 98, 103
    master - mean (93ms)  : 91, 96

    section Bailout
    This PR (7898) - mean (102ms)  : crit, 100, 104
    master - mean (94ms)  : 93, 95

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (691ms)  : 669, 712
    master - mean (669ms)  : 644, 695

FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (99ms)  : 97, 102
    master - mean (92ms)  : 90, 94

    section Bailout
    This PR (7898) - mean (102ms)  : crit, 99, 104
    master - mean (93ms)  : 91, 94

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (660ms)  : 637, 682
    master - mean (628ms)  : 615, 642

HttpMessageHandler (.NET Framework 4.8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (195ms)  : 190, 199
    master - mean (194ms)  : 189, 200

    section Bailout
    This PR (7898) - mean (199ms)  : 195, 203
    master - mean (197ms)  : 194, 200

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (1,133ms)  : 1069, 1198
    master - mean (1,113ms)  : 1062, 1164

HttpMessageHandler (.NET Core 3.1)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (280ms)  : 269, 290
    master - mean (277ms)  : 271, 283

    section Bailout
    This PR (7898) - mean (286ms)  : 273, 298
    master - mean (277ms)  : 274, 281

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (918ms)  : 873, 962
    master - mean (907ms)  : 866, 949

HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7898) - mean (274ms)  : 267, 280
    master - mean (270ms)  : 265, 276

    section Bailout
    This PR (7898) - mean (276ms)  : 268, 283
    master - mean (270ms)  : 266, 274

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (889ms)  : 859, 919
    master - mean (890ms)  : 845, 934

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

    section Bailout
    This PR (7898) - mean (275ms)  : 265, 285
    master - mean (270ms)  : 265, 275

    section CallTarget+Inlining+NGEN
    This PR (7898) - mean (836ms)  : 800, 872
    master - mean (822ms)  : 803, 842

@codex review

vandonr avatar Dec 17 '25 16:12 vandonr