Refacto: Make ContainerMetadata an instance class
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
✅ Tests
🎉 All green!
❄️ No new flaky tests detected
🧪 All tests passed
🔗 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 |
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 | ||||
| duration | 68.13 ± (68.13 - 68.35) ms | 73.86 ± (73.92 - 74.29) ms | +8.4% | ❌⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 71.94 ± (71.81 - 72.01) ms | 77.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 | ||||
| duration | 68.13 ± (68.13 - 68.35) ms | 73.86 ± (73.92 - 74.29) ms | +8.4% | ❌⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 71.94 ± (71.81 - 72.01) ms | 77.39 ± (77.26 - 77.62) ms | +7.6% | ❌⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1001.47 ± (1007.97 - 1017.63) ms | 1044.16 ± (1047.36 - 1055.10) ms | +4.3% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 21.96 ± (21.94 - 21.99) ms | 22.83 ± (22.79 - 22.86) ms | +3.9% | ✅⬆️ |
| process.time_to_main_ms | 78.40 ± (78.23 - 78.56) ms | 84.65 ± (84.46 - 84.83) ms | +8.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.91 ± (10.90 - 10.91) MB | 10.91 ± (10.91 - 10.92) MB | +0.0% | ✅⬆️ |
| runtime.dotnet.threads.count | 12 ± (12 - 12) | 12 ± (12 - 12) | +0.0% | ✅ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 21.90 ± (21.88 - 21.92) ms | 22.76 ± (22.71 - 22.80) ms | +3.9% | ✅⬆️ |
| process.time_to_main_ms | 79.42 ± (79.33 - 79.52) ms | 85.56 ± (85.35 - 85.76) ms | +7.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.94 ± (10.94 - 10.94) MB | 10.96 ± (10.95 - 10.96) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 13 ± (13 - 13) | 13 ± (13 - 13) | +0.0% | ✅ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 211.56 ± (209.85 - 213.28) ms | 219.03 ± (217.80 - 220.26) ms | +3.5% | ✅⬆️ |
| process.time_to_main_ms | 471.87 ± (471.29 - 472.45) ms | 493.96 ± (493.25 - 494.67) ms | +4.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 48.05 ± (48.03 - 48.07) MB | 48.13 ± (48.11 - 48.16) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | +0.0% | ✅ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 20.59 ± (20.55 - 20.62) ms | 21.43 ± (21.39 - 21.47) ms | +4.1% | ✅⬆️ |
| process.time_to_main_ms | 67.89 ± (67.74 - 68.03) ms | 72.86 ± (72.72 - 73.00) ms | +7.3% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.62 ± (10.62 - 10.62) MB | 10.63 ± (10.63 - 10.64) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 20.51 ± (20.49 - 20.54) ms | 21.38 ± (21.34 - 21.42) ms | +4.2% | ✅⬆️ |
| process.time_to_main_ms | 68.69 ± (68.64 - 68.75) ms | 74.03 ± (73.87 - 74.20) ms | +7.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.68 ± (10.68 - 10.69) MB | 10.68 ± (10.67 - 10.68) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 201.55 ± (200.42 - 202.69) ms | 205.55 ± (204.54 - 206.55) ms | +2.0% | ✅⬆️ |
| process.time_to_main_ms | 440.63 ± (439.88 - 441.38) ms | 458.22 ± (457.45 - 458.98) ms | +4.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 48.41 ± (48.36 - 48.47) MB | 48.56 ± (48.54 - 48.59) MB | +0.3% | ✅⬆️ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | -0.1% | ✅ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 18.80 ± (18.78 - 18.82) ms | 19.57 ± (19.54 - 19.61) ms | +4.1% | ✅⬆️ |
| process.time_to_main_ms | 67.01 ± (66.91 - 67.11) ms | 72.24 ± (72.06 - 72.41) ms | +7.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.69 ± (7.68 - 7.70) MB | 7.68 ± (7.67 - 7.69) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 18.76 ± (18.73 - 18.78) ms | 19.71 ± (19.66 - 19.76) ms | +5.1% | ✅⬆️ |
| process.time_to_main_ms | 67.95 ± (67.89 - 68.02) ms | 74.19 ± (74.03 - 74.36) ms | +9.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.73 ± (7.72 - 7.74) MB | 7.72 ± (7.72 - 7.73) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 178.28 ± (177.29 - 179.26) ms | 187.72 ± (186.89 - 188.54) ms | +5.3% | ✅⬆️ |
| process.time_to_main_ms | 421.86 ± (421.31 - 422.41) ms | 444.00 ± (443.36 - 444.63) ms | +5.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 36.26 ± (36.22 - 36.30) MB | 36.40 ± (36.36 - 36.44) MB | +0.4% | ✅⬆️ |
| runtime.dotnet.threads.count | 27 ± (27 - 27) | 27 ± (27 - 27) | +0.4% | ✅⬆️ |
HttpMessageHandler
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 193.44 ± (193.61 - 194.53) ms | 194.60 ± (194.32 - 195.14) ms | +0.6% | ✅⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 196.93 ± (196.66 - 197.21) ms | 198.76 ± (198.61 - 199.42) ms | +0.9% | ✅⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1108.26 ± (1109.47 - 1116.57) ms | 1129.20 ± (1129.13 - 1137.72) ms | +1.9% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 188.24 ± (187.80 - 188.68) ms | 189.39 ± (188.97 - 189.81) ms | +0.6% | ✅⬆️ |
| process.time_to_main_ms | 80.54 ± (80.34 - 80.74) ms | 81.38 ± (81.16 - 81.59) ms | +1.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.11 ± (16.08 - 16.14) MB | 16.13 ± (16.11 - 16.16) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | -0.6% | ✅ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 187.26 ± (186.95 - 187.57) ms | 192.51 ± (192.00 - 193.01) ms | +2.8% | ✅⬆️ |
| process.time_to_main_ms | 81.81 ± (81.68 - 81.94) ms | 84.27 ± (84.05 - 84.49) ms | +3.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.13 ± (16.10 - 16.16) MB | 16.05 ± (16.04 - 16.07) MB | -0.5% | ✅ |
| runtime.dotnet.threads.count | 21 ± (21 - 21) | 21 ± (21 - 21) | -0.2% | ✅ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 398.33 ± (395.71 - 400.96) ms | 400.61 ± (397.95 - 403.27) ms | +0.6% | ✅⬆️ |
| process.time_to_main_ms | 476.18 ± (475.48 - 476.89) ms | 481.59 ± (480.72 - 482.46) ms | +1.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 58.66 ± (58.52 - 58.79) MB | 58.87 ± (58.75 - 58.99) MB | +0.4% | ✅⬆️ |
| runtime.dotnet.threads.count | 29 ± (29 - 30) | 30 ± (29 - 30) | +0.2% | ✅⬆️ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 191.96 ± (191.55 - 192.38) ms | 194.53 ± (194.12 - 194.94) ms | +1.3% | ✅⬆️ |
| process.time_to_main_ms | 69.95 ± (69.76 - 70.14) ms | 70.71 ± (70.49 - 70.92) ms | +1.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.96 ± (15.81 - 16.11) MB | 16.39 ± (16.36 - 16.42) MB | +2.7% | ✅⬆️ |
| runtime.dotnet.threads.count | 18 ± (18 - 19) | 19 ± (19 - 19) | +4.3% | ✅⬆️ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 191.01 ± (190.74 - 191.28) ms | 195.32 ± (194.82 - 195.82) ms | +2.3% | ✅⬆️ |
| process.time_to_main_ms | 70.83 ± (70.74 - 70.92) ms | 72.27 ± (72.09 - 72.45) ms | +2.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.16 ± (16.03 - 16.30) MB | 16.39 ± (16.33 - 16.44) MB | +1.4% | ✅⬆️ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 20 ± (20 - 20) | +3.7% | ✅⬆️ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 412.12 ± (409.68 - 414.56) ms | 409.49 ± (407.84 - 411.13) ms | -0.6% | ✅ |
| process.time_to_main_ms | 444.71 ± (443.94 - 445.49) ms | 448.74 ± (448.08 - 449.40) ms | +0.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 59.24 ± (59.11 - 59.36) MB | 59.20 ± (59.08 - 59.33) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 29 ± (29 - 30) | 30 ± (29 - 30) | +0.1% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 189.55 ± (189.25 - 189.84) ms | 190.28 ± (190.01 - 190.55) ms | +0.4% | ✅⬆️ |
| process.time_to_main_ms | 69.08 ± (68.91 - 69.25) ms | 69.72 ± (69.55 - 69.89) ms | +0.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.68 ± (11.66 - 11.71) MB | 11.74 ± (11.71 - 11.77) MB | +0.5% | ✅⬆️ |
| runtime.dotnet.threads.count | 18 ± (18 - 18) | 18 ± (18 - 18) | -0.1% | ✅ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 190.20 ± (189.78 - 190.61) ms | 193.02 ± (192.52 - 193.52) ms | +1.5% | ✅⬆️ |
| process.time_to_main_ms | 70.35 ± (70.23 - 70.47) ms | 71.74 ± (71.56 - 71.92) ms | +2.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.77 ± (11.74 - 11.80) MB | 11.75 ± (11.73 - 11.77) MB | -0.2% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 19 ± (19 - 19) | +0.2% | ✅⬆️ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 363.94 ± (362.59 - 365.29) ms | 369.74 ± (368.01 - 371.47) ms | +1.6% | ✅⬆️ |
| process.time_to_main_ms | 426.63 ± (426.06 - 427.19) ms | 436.08 ± (434.93 - 437.22) ms | +2.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 47.96 ± (47.93 - 47.99) MB | 48.02 ± (47.99 - 48.05) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 29 ± (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