-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CIVisibility] TestPlatform AssemblyResolver .ctor integration #5088
[CIVisibility] TestPlatform AssemblyResolver .ctor integration #5088
Conversation
Datadog ReportBranch report: ❌ 1 Failed (0 Known Flaky), 307792 Passed, 1507 Skipped, 59m 59.69s Wall Time ❌ Failed Tests (1)
⌛ Performance Regressions vs Default Branch (1)
|
Execution-Time Benchmarks Report ⏱️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:
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 (5088) - mean (72ms) : 63, 81
. : milestone, 72,
master - mean (70ms) : 62, 79
. : milestone, 70,
section CallTarget+Inlining+NGEN
This PR (5088) - mean (957ms) : 938, 975
. : milestone, 957,
master - mean (955ms) : 937, 973
. : milestone, 955,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5088) - mean (105ms) : 101, 109
. : milestone, 105,
master - mean (106ms) : 103, 110
. : milestone, 106,
section CallTarget+Inlining+NGEN
This PR (5088) - mean (713ms) : 688, 739
. : milestone, 713,
master - mean (698ms) : 675, 721
. : milestone, 698,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5088) - mean (90ms) : 87, 93
. : milestone, 90,
master - mean (89ms) : 85, 93
. : milestone, 89,
section CallTarget+Inlining+NGEN
This PR (5088) - mean (652ms) : 631, 674
. : milestone, 652,
master - mean (653ms) : 636, 670
. : milestone, 653,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5088) - mean (188ms) : 186, 190
. : milestone, 188,
master - mean (188ms) : 185, 192
. : milestone, 188,
section CallTarget+Inlining+NGEN
This PR (5088) - mean (1,068ms) : 1044, 1091
. : milestone, 1068,
master - mean (1,064ms) : 1043, 1085
. : milestone, 1064,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5088) - mean (273ms) : 269, 276
. : milestone, 273,
master - mean (271ms) : 266, 276
. : milestone, 271,
section CallTarget+Inlining+NGEN
This PR (5088) - mean (1,051ms) : 1025, 1078
. : milestone, 1051,
master - mean (1,045ms) : 1023, 1067
. : milestone, 1045,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (5088) - mean (262ms) : 258, 266
. : milestone, 262,
master - mean (261ms) : 257, 264
. : milestone, 261,
section CallTarget+Inlining+NGEN
This PR (5088) - mean (1,018ms) : 995, 1042
. : milestone, 1018,
master - mean (1,017ms) : 997, 1037
. : milestone, 1017,
|
Benchmarks Report 🐌Benchmarks for #5088 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.ActivityBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Faster 🎉 Same allocations ✔️
|
Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody‑netcoreapp3.1 | 1.155 | 241.81 | 209.41 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | AllCycleSimpleBody |
net6.0 | 38.6μs | 14.7ns | 51ns | 0.0193 | 0 | 0 | 1.77 KB |
master | AllCycleSimpleBody |
netcoreapp3.1 | 42.3μs | 79.4ns | 308ns | 0.0208 | 0 | 0 | 1.74 KB |
master | AllCycleSimpleBody |
net472 | 44.7μs | 71.4ns | 258ns | 0.288 | 0 | 0 | 1.81 KB |
master | AllCycleMoreComplexBody |
net6.0 | 198μs | 110ns | 427ns | 0.0989 | 0 | 0 | 9.25 KB |
master | AllCycleMoreComplexBody |
netcoreapp3.1 | 211μs | 125ns | 483ns | 0.106 | 0 | 0 | 9.14 KB |
master | AllCycleMoreComplexBody |
net472 | 224μs | 77ns | 288ns | 1.45 | 0 | 0 | 9.32 KB |
master | ObjectExtractorSimpleBody |
net6.0 | 145ns | 0.0748ns | 0.259ns | 0.00397 | 0 | 0 | 280 B |
master | ObjectExtractorSimpleBody |
netcoreapp3.1 | 242ns | 0.132ns | 0.513ns | 0.00378 | 0 | 0 | 272 B |
master | ObjectExtractorSimpleBody |
net472 | 166ns | 0.163ns | 0.609ns | 0.0446 | 0 | 0 | 281 B |
master | ObjectExtractorMoreComplexBody |
net6.0 | 2.94μs | 2.4ns | 8.99ns | 0.0529 | 0 | 0 | 3.78 KB |
master | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 3.98μs | 1.28ns | 4.61ns | 0.0498 | 0 | 0 | 3.69 KB |
master | ObjectExtractorMoreComplexBody |
net472 | 3.81μs | 4.32ns | 16.2ns | 0.602 | 0.00571 | 0 | 3.8 KB |
#5088 | AllCycleSimpleBody |
net6.0 | 38.3μs | 13.7ns | 52.9ns | 0.0191 | 0 | 0 | 1.77 KB |
#5088 | AllCycleSimpleBody |
netcoreapp3.1 | 41.6μs | 27.6ns | 107ns | 0.0208 | 0 | 0 | 1.74 KB |
#5088 | AllCycleSimpleBody |
net472 | 44.4μs | 20.2ns | 78.1ns | 0.288 | 0 | 0 | 1.81 KB |
#5088 | AllCycleMoreComplexBody |
net6.0 | 203μs | 130ns | 503ns | 0.101 | 0 | 0 | 9.25 KB |
#5088 | AllCycleMoreComplexBody |
netcoreapp3.1 | 211μs | 193ns | 747ns | 0.106 | 0 | 0 | 9.14 KB |
#5088 | AllCycleMoreComplexBody |
net472 | 228μs | 57.1ns | 221ns | 1.47 | 0 | 0 | 9.32 KB |
#5088 | ObjectExtractorSimpleBody |
net6.0 | 143ns | 0.149ns | 0.578ns | 0.00392 | 0 | 0 | 280 B |
#5088 | ObjectExtractorSimpleBody |
netcoreapp3.1 | 211ns | 0.711ns | 2.75ns | 0.00365 | 0 | 0 | 272 B |
#5088 | ObjectExtractorSimpleBody |
net472 | 174ns | 0.157ns | 0.608ns | 0.0446 | 0 | 0 | 281 B |
#5088 | ObjectExtractorMoreComplexBody |
net6.0 | 3.04μs | 2.53ns | 9.46ns | 0.0531 | 0 | 0 | 3.78 KB |
#5088 | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 4.02μs | 1.57ns | 5.89ns | 0.0504 | 0 | 0 | 3.69 KB |
#5088 | ObjectExtractorMoreComplexBody |
net472 | 3.84μs | 3.66ns | 14.2ns | 0.602 | 0.00573 | 0 | 3.8 KB |
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️
Slower ⚠️ in #5088
Benchmark
diff/base
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWaf(args: NestedMap (10))‑net6.0
1.128
50,823.99
57,343.44
Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWaf(args: NestedMap (10))‑net6.0 | 1.128 | 50,823.99 | 57,343.44 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | RunWaf(args=NestedMap (10)) |
net6.0 | 50.8μs | 21ns | 78.4ns | 0.226 | 0 | 0 | 16.06 KB |
master | RunWaf(args=NestedMap (10)) |
netcoreapp3.1 | 70.1μs | 179ns | 692ns | 0.206 | 0 | 0 | 16.06 KB |
master | RunWaf(args=NestedMap (10)) |
net472 | 98.2μs | 495ns | 2.16μs | 2.55 | 0.1 | 0 | 16.14 KB |
master | RunWafTwice(args=NestedMap (10)) |
net6.0 | 52.3μs | 22.4ns | 83.9ns | 0.236 | 0 | 0 | 16.6 KB |
master | RunWafTwice(args=NestedMap (10)) |
netcoreapp3.1 | 75μs | 385ns | 1.72μs | 0.19 | 0 | 0 | 16.58 KB |
master | RunWafTwice(args=NestedMap (10)) |
net472 | 104μs | 49.8ns | 193ns | 2.62 | 0.105 | 0 | 16.69 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 119μs | 57.4ns | 222ns | 0.326 | 0 | 0 | 22.41 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 129μs | 673ns | 3.3μs | 0.255 | 0 | 0 | 22.36 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 163μs | 112ns | 432ns | 3.54 | 0.157 | 0 | 22.7 KB |
master | RunWaf(args=NestedMap (100)) |
net6.0 | 110μs | 53.3ns | 200ns | 0.43 | 0 | 0 | 32.76 KB |
master | RunWaf(args=NestedMap (100)) |
netcoreapp3.1 | 135μs | 66.9ns | 232ns | 0.443 | 0 | 0 | 33.33 KB |
master | RunWaf(args=NestedMap (100)) |
net472 | 189μs | 709ns | 2.75μs | 5.33 | 0.374 | 0 | 33.67 KB |
master | RunWafTwice(args=NestedMap (100)) |
net6.0 | 103μs | 555ns | 3.09μs | 0.449 | 0 | 0 | 33.3 KB |
master | RunWafTwice(args=NestedMap (100)) |
netcoreapp3.1 | 142μs | 478ns | 1.85μs | 0.424 | 0 | 0 | 33.86 KB |
master | RunWafTwice(args=NestedMap (100)) |
net472 | 201μs | 61.3ns | 237ns | 5.35 | 0.389 | 0 | 34.23 KB |
master | RunWafWithAttack(args=Neste(...)tack) [23]) |
net6.0 | 172μs | 105ns | 405ns | 0.551 | 0 | 0 | 39.1 KB |
master | RunWafWithAttack(args=Neste(...)tack) [23]) |
netcoreapp3.1 | 198μs | 761ns | 2.95μs | 0.486 | 0 | 0 | 39.63 KB |
master | RunWafWithAttack(args=Neste(...)tack) [23]) |
net472 | 253μs | 159ns | 614ns | 6.36 | 0.509 | 0 | 40.23 KB |
master | RunWaf(args=NestedMap (20)) |
net6.0 | 99.6μs | 43.3ns | 189ns | 0.43 | 0 | 0 | 32.18 KB |
master | RunWaf(args=NestedMap (20)) |
netcoreapp3.1 | 134μs | 753ns | 4.82μs | 0.441 | 0 | 0 | 32.3 KB |
master | RunWaf(args=NestedMap (20)) |
net472 | 183μs | 72.3ns | 271ns | 5.1 | 0.364 | 0 | 32.63 KB |
master | RunWafTwice(args=NestedMap (20)) |
net6.0 | 103μs | 453ns | 1.75μs | 0.469 | 0 | 0 | 32.72 KB |
master | RunWafTwice(args=NestedMap (20)) |
netcoreapp3.1 | 139μs | 749ns | 4.3μs | 0.427 | 0 | 0 | 32.82 KB |
master | RunWafTwice(args=NestedMap (20)) |
net472 | 197μs | 729ns | 2.82μs | 5.21 | 0.386 | 0 | 33.19 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 166μs | 94.7ns | 367ns | 0.557 | 0 | 0 | 38.53 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 197μs | 90ns | 349ns | 0.491 | 0 | 0 | 38.6 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 251μs | 114ns | 428ns | 6.16 | 0.503 | 0 | 39.2 KB |
#5088 | RunWaf(args=NestedMap (10)) |
net6.0 | 57.3μs | 90.2ns | 337ns | 0.229 | 0 | 0 | 16.06 KB |
#5088 | RunWaf(args=NestedMap (10)) |
netcoreapp3.1 | 68.2μs | 298ns | 1.19μs | 0.199 | 0 | 0 | 16.06 KB |
#5088 | RunWaf(args=NestedMap (10)) |
net472 | 100μs | 62.2ns | 241ns | 2.53 | 0.0953 | 0 | 16.14 KB |
#5088 | RunWafTwice(args=NestedMap (10)) |
net6.0 | 52.8μs | 38.1ns | 137ns | 0.236 | 0 | 0 | 16.6 KB |
#5088 | RunWafTwice(args=NestedMap (10)) |
netcoreapp3.1 | 74.8μs | 420ns | 2.91μs | 0.208 | 0 | 0 | 16.58 KB |
#5088 | RunWafTwice(args=NestedMap (10)) |
net472 | 104μs | 26.9ns | 101ns | 2.6 | 0.104 | 0 | 16.69 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 113μs | 27.4ns | 102ns | 0.286 | 0 | 0 | 22.41 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 131μs | 395ns | 1.48μs | 0.264 | 0 | 0 | 22.36 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 158μs | 106ns | 409ns | 3.56 | 0.158 | 0 | 22.7 KB |
#5088 | RunWaf(args=NestedMap (100)) |
net6.0 | 100μs | 48.6ns | 175ns | 0.451 | 0 | 0 | 32.76 KB |
#5088 | RunWaf(args=NestedMap (100)) |
netcoreapp3.1 | 132μs | 318ns | 1.23μs | 0.44 | 0 | 0 | 33.33 KB |
#5088 | RunWaf(args=NestedMap (100)) |
net472 | 191μs | 87.9ns | 340ns | 5.3 | 0.365 | 0 | 33.67 KB |
#5088 | RunWafTwice(args=NestedMap (100)) |
net6.0 | 101μs | 19.6ns | 67.9ns | 0.452 | 0 | 0 | 33.3 KB |
#5088 | RunWafTwice(args=NestedMap (100)) |
netcoreapp3.1 | 140μs | 694ns | 2.86μs | 0.424 | 0 | 0 | 33.86 KB |
#5088 | RunWafTwice(args=NestedMap (100)) |
net472 | 196μs | 90.8ns | 340ns | 5.41 | 0.386 | 0 | 34.23 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [23]) |
net6.0 | 166μs | 799ns | 3.2μs | 0.556 | 0 | 0 | 39.1 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [23]) |
netcoreapp3.1 | 192μs | 58.5ns | 203ns | 0.48 | 0 | 0 | 39.63 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [23]) |
net472 | 260μs | 138ns | 535ns | 6.31 | 0.505 | 0 | 40.23 KB |
#5088 | RunWaf(args=NestedMap (20)) |
net6.0 | 100μs | 361ns | 1.3μs | 0.453 | 0 | 0 | 32.18 KB |
#5088 | RunWaf(args=NestedMap (20)) |
netcoreapp3.1 | 130μs | 722ns | 4.51μs | 0.398 | 0 | 0 | 32.3 KB |
#5088 | RunWaf(args=NestedMap (20)) |
net472 | 184μs | 204ns | 789ns | 5.14 | 0.367 | 0 | 32.63 KB |
#5088 | RunWafTwice(args=NestedMap (20)) |
net6.0 | 112μs | 55.7ns | 216ns | 0.453 | 0 | 0 | 32.72 KB |
#5088 | RunWafTwice(args=NestedMap (20)) |
netcoreapp3.1 | 139μs | 328ns | 1.27μs | 0.409 | 0 | 0 | 32.82 KB |
#5088 | RunWafTwice(args=NestedMap (20)) |
net472 | 192μs | 137ns | 531ns | 5.26 | 0.383 | 0 | 33.19 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 163μs | 811ns | 3.44μs | 0.501 | 0 | 0 | 38.53 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 198μs | 684ns | 2.65μs | 0.486 | 0 | 0 | 38.6 KB |
#5088 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 254μs | 1.1μs | 4.26μs | 6.23 | 0.498 | 0 | 39.2 KB |
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | SendRequest |
net6.0 | 175μs | 153ns | 594ns | 0.174 | 0 | 0 | 18.25 KB |
master | SendRequest |
netcoreapp3.1 | 195μs | 302ns | 1.17μs | 0.196 | 0 | 0 | 20.41 KB |
master | SendRequest |
net472 | 0.000187ns | 0.000166ns | 0.000621ns | 0 | 0 | 0 | 0 b |
#5088 | SendRequest |
net6.0 | 172μs | 95.1ns | 356ns | 0.257 | 0 | 0 | 18.25 KB |
#5088 | SendRequest |
netcoreapp3.1 | 194μs | 379ns | 1.47μs | 0.195 | 0 | 0 | 20.41 KB |
#5088 | SendRequest |
net472 | 0.00056ns | 0.000277ns | 0.001ns | 0 | 0 | 0 | 0 b |
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Fewer allocations 🎉
Fewer allocations 🎉 in #5088
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1
41.85 KB
41.6 KB
-251 B
-0.60%
Benchmark | Base Allocated | Diff Allocated | Change | Change % |
---|---|---|---|---|
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 | 41.85 KB | 41.6 KB | -251 B | -0.60% |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | WriteAndFlushEnrichedTraces |
net6.0 | 543μs | 2.33μs | 9.04μs | 0.558 | 0 | 0 | 41.45 KB |
master | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 641μs | 516ns | 2μs | 0.321 | 0 | 0 | 41.85 KB |
master | WriteAndFlushEnrichedTraces |
net472 | 865μs | 4.46μs | 20.9μs | 8.45 | 2.53 | 0.422 | 53.24 KB |
#5088 | WriteAndFlushEnrichedTraces |
net6.0 | 554μs | 1.29μs | 4.99μs | 0.546 | 0 | 0 | 41.55 KB |
#5088 | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 654μs | 1.72μs | 6.43μs | 0.334 | 0 | 0 | 41.6 KB |
#5088 | WriteAndFlushEnrichedTraces |
net472 | 819μs | 3.8μs | 14.2μs | 8.06 | 2.42 | 0.403 | 53.27 KB |
Benchmarks.Trace.DbCommandBenchmark - Faster 🎉 Same allocations ✔️
Faster 🎉 in #5088
Benchmark
base/diff
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery‑net6.0
1.143
1,218.93
1,066.01
Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery‑net6.0 | 1.143 | 1,218.93 | 1,066.01 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | ExecuteNonQuery |
net6.0 | 1.22μs | 0.642ns | 2.49ns | 0.0109 | 0 | 0 | 768 B |
master | ExecuteNonQuery |
netcoreapp3.1 | 1.46μs | 0.797ns | 3.09ns | 0.0104 | 0 | 0 | 768 B |
master | ExecuteNonQuery |
net472 | 1.81μs | 1.42ns | 5.1ns | 0.116 | 0 | 0 | 730 B |
#5088 | ExecuteNonQuery |
net6.0 | 1.07μs | 0.339ns | 1.18ns | 0.0107 | 0 | 0 | 768 B |
#5088 | ExecuteNonQuery |
netcoreapp3.1 | 1.46μs | 2.5ns | 9.7ns | 0.0103 | 0 | 0 | 768 B |
#5088 | ExecuteNonQuery |
net472 | 1.78μs | 4.53ns | 17.5ns | 0.115 | 0 | 0 | 730 B |
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | CallElasticsearch |
net6.0 | 1.21μs | 0.96ns | 3.72ns | 0.0133 | 0 | 0 | 936 B |
master | CallElasticsearch |
netcoreapp3.1 | 1.5μs | 0.727ns | 2.82ns | 0.0121 | 0 | 0 | 936 B |
master | CallElasticsearch |
net472 | 2.61μs | 1.72ns | 6.68ns | 0.151 | 0 | 0 | 955 B |
master | CallElasticsearchAsync |
net6.0 | 1.28μs | 0.439ns | 1.64ns | 0.0125 | 0 | 0 | 912 B |
master | CallElasticsearchAsync |
netcoreapp3.1 | 1.56μs | 0.658ns | 2.46ns | 0.0133 | 0 | 0 | 984 B |
master | CallElasticsearchAsync |
net472 | 2.6μs | 1.04ns | 4.05ns | 0.16 | 0 | 0 | 1.01 KB |
#5088 | CallElasticsearch |
net6.0 | 1.17μs | 0.644ns | 2.41ns | 0.0133 | 0 | 0 | 936 B |
#5088 | CallElasticsearch |
netcoreapp3.1 | 1.48μs | 0.73ns | 2.73ns | 0.0121 | 0 | 0 | 936 B |
#5088 | CallElasticsearch |
net472 | 2.56μs | 0.763ns | 2.95ns | 0.151 | 0 | 0 | 955 B |
#5088 | CallElasticsearchAsync |
net6.0 | 1.35μs | 0.355ns | 1.28ns | 0.0128 | 0 | 0 | 912 B |
#5088 | CallElasticsearchAsync |
netcoreapp3.1 | 1.67μs | 0.303ns | 1.13ns | 0.0133 | 0 | 0 | 984 B |
#5088 | CallElasticsearchAsync |
net472 | 2.64μs | 1.04ns | 4.04ns | 0.16 | 0 | 0 | 1.01 KB |
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | ExecuteAsync |
net6.0 | 1.29μs | 0.89ns | 3.45ns | 0.0131 | 0 | 0 | 912 B |
master | ExecuteAsync |
netcoreapp3.1 | 1.67μs | 1.56ns | 6.03ns | 0.0126 | 0 | 0 | 912 B |
master | ExecuteAsync |
net472 | 1.78μs | 1.12ns | 4.19ns | 0.139 | 0 | 0 | 875 B |
#5088 | ExecuteAsync |
net6.0 | 1.36μs | 0.328ns | 1.18ns | 0.013 | 0 | 0 | 912 B |
#5088 | ExecuteAsync |
netcoreapp3.1 | 1.63μs | 0.573ns | 2.14ns | 0.0123 | 0 | 0 | 912 B |
#5088 | ExecuteAsync |
net472 | 1.8μs | 1.39ns | 5.38ns | 0.138 | 0 | 0 | 875 B |
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | SendAsync |
net6.0 | 3.93μs | 3.21ns | 12.4ns | 0.0293 | 0 | 0 | 2.1 KB |
master | SendAsync |
netcoreapp3.1 | 4.94μs | 23.2ns | 125ns | 0.0341 | 0 | 0 | 2.63 KB |
master | SendAsync |
net472 | 7.8μs | 8.05ns | 31.2ns | 0.524 | 0 | 0 | 3.31 KB |
#5088 | SendAsync |
net6.0 | 4.22μs | 2.35ns | 8.47ns | 0.0297 | 0 | 0 | 2.1 KB |
#5088 | SendAsync |
netcoreapp3.1 | 4.97μs | 1.81ns | 7.03ns | 0.0348 | 0 | 0 | 2.63 KB |
#5088 | SendAsync |
net472 | 7.8μs | 5.5ns | 21.3ns | 0.524 | 0 | 0 | 3.31 KB |
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️
More allocations ⚠️ in #5088
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472
57.67 KB
62.51 KB
4.84 KB
8.39%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0
202.62 KB
214.3 KB
11.69 KB
5.77%
Fewer allocations 🎉 in #5088
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1
212.78 KB
203.7 KB
-9.09 KB
-4.27%
Benchmark | Base Allocated | Diff Allocated | Change | Change % |
---|---|---|---|---|
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 | 57.67 KB | 62.51 KB | 4.84 KB | 8.39% |
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 | 202.62 KB | 214.3 KB | 11.69 KB | 5.77% |
Benchmark | Base Allocated | Diff Allocated | Change | Change % |
---|---|---|---|---|
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 | 212.78 KB | 203.7 KB | -9.09 KB | -4.27% |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | StringConcatBenchmark |
net6.0 | 58.1μs | 602ns | 5.93μs | 0 | 0 | 0 | 43.44 KB |
master | StringConcatBenchmark |
netcoreapp3.1 | 53.9μs | 260ns | 1.01μs | 0 | 0 | 0 | 42.64 KB |
master | StringConcatBenchmark |
net472 | 38.1μs | 91.8ns | 344ns | 0 | 0 | 0 | 57.67 KB |
master | StringConcatAspectBenchmark |
net6.0 | 272μs | 4.72μs | 43.6μs | 0 | 0 | 0 | 202.62 KB |
master | StringConcatAspectBenchmark |
netcoreapp3.1 | 293μs | 5.49μs | 50.6μs | 0 | 0 | 0 | 212.78 KB |
master | StringConcatAspectBenchmark |
net472 | 245μs | 4.46μs | 42.3μs | 0 | 0 | 0 | 221.18 KB |
#5088 | StringConcatBenchmark |
net6.0 | 52μs | 186ns | 1.28μs | 0 | 0 | 0 | 43.44 KB |
#5088 | StringConcatBenchmark |
netcoreapp3.1 | 53.3μs | 129ns | 754ns | 0 | 0 | 0 | 42.64 KB |
#5088 | StringConcatBenchmark |
net472 | 38μs | 55.9ns | 209ns | 0 | 0 | 0 | 62.51 KB |
#5088 | StringConcatAspectBenchmark |
net6.0 | 278μs | 1.49μs | 8.02μs | 0 | 0 | 0 | 214.3 KB |
#5088 | StringConcatAspectBenchmark |
netcoreapp3.1 | 298μs | 3.06μs | 27.4μs | 0 | 0 | 0 | 203.7 KB |
#5088 | StringConcatAspectBenchmark |
net472 | 244μs | 3.47μs | 33.1μs | 0 | 0 | 0 | 221.18 KB |
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | EnrichedLog |
net6.0 | 1.44μs | 0.961ns | 3.47ns | 0.0223 | 0 | 0 | 1.57 KB |
master | EnrichedLog |
netcoreapp3.1 | 2.28μs | 1.73ns | 6.47ns | 0.0205 | 0 | 0 | 1.57 KB |
master | EnrichedLog |
net472 | 2.72μs | 3.3ns | 12.8ns | 0.237 | 0 | 0 | 1.5 KB |
#5088 | EnrichedLog |
net6.0 | 1.54μs | 0.546ns | 2.12ns | 0.0217 | 0 | 0 | 1.57 KB |
#5088 | EnrichedLog |
netcoreapp3.1 | 2.25μs | 1.95ns | 7.29ns | 0.0213 | 0 | 0 | 1.57 KB |
#5088 | EnrichedLog |
net472 | 2.58μs | 2.29ns | 8.56ns | 0.238 | 0 | 0 | 1.5 KB |
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | EnrichedLog |
net6.0 | 113μs | 168ns | 652ns | 0 | 0 | 0 | 4.21 KB |
master | EnrichedLog |
netcoreapp3.1 | 118μs | 113ns | 438ns | 0 | 0 | 0 | 4.21 KB |
master | EnrichedLog |
net472 | 149μs | 42.4ns | 153ns | 0.669 | 0.223 | 0 | 4.39 KB |
#5088 | EnrichedLog |
net6.0 | 113μs | 97.7ns | 366ns | 0 | 0 | 0 | 4.21 KB |
#5088 | EnrichedLog |
netcoreapp3.1 | 118μs | 85ns | 329ns | 0.0587 | 0 | 0 | 4.21 KB |
#5088 | EnrichedLog |
net472 | 149μs | 46.2ns | 167ns | 0.667 | 0.222 | 0 | 4.39 KB |
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | EnrichedLog |
net6.0 | 3.07μs | 2.17ns | 8.42ns | 0.0292 | 0 | 0 | 2.13 KB |
master | EnrichedLog |
netcoreapp3.1 | 4.3μs | 2.37ns | 8.22ns | 0.0279 | 0 | 0 | 2.13 KB |
master | EnrichedLog |
net472 | 4.76μs | 1.27ns | 4.57ns | 0.308 | 0 | 0 | 1.95 KB |
#5088 | EnrichedLog |
net6.0 | 3.06μs | 0.965ns | 3.74ns | 0.0296 | 0 | 0 | 2.13 KB |
#5088 | EnrichedLog |
netcoreapp3.1 | 4.24μs | 8.92ns | 34.5ns | 0.0273 | 0 | 0 | 2.13 KB |
#5088 | EnrichedLog |
net472 | 4.75μs | 1.94ns | 7.53ns | 0.308 | 0 | 0 | 1.95 KB |
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | SendReceive |
net6.0 | 1.35μs | 1.69ns | 6.55ns | 0.0155 | 0 | 0 | 1.1 KB |
master | SendReceive |
netcoreapp3.1 | 1.74μs | 1.3ns | 4.88ns | 0.0148 | 0 | 0 | 1.1 KB |
master | SendReceive |
net472 | 2.18μs | 2.41ns | 9.34ns | 0.177 | 0 | 0 | 1.12 KB |
#5088 | SendReceive |
net6.0 | 1.43μs | 0.589ns | 2.28ns | 0.015 | 0 | 0 | 1.1 KB |
#5088 | SendReceive |
netcoreapp3.1 | 1.78μs | 0.689ns | 2.67ns | 0.0142 | 0 | 0 | 1.1 KB |
#5088 | SendReceive |
net472 | 2.11μs | 2.69ns | 10.4ns | 0.176 | 0 | 0 | 1.12 KB |
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | EnrichedLog |
net6.0 | 2.71μs | 0.959ns | 3.71ns | 0.0216 | 0 | 0 | 1.53 KB |
master | EnrichedLog |
netcoreapp3.1 | 3.97μs | 1.11ns | 4.17ns | 0.0198 | 0 | 0 | 1.58 KB |
master | EnrichedLog |
net472 | 4.32μs | 1.13ns | 4.22ns | 0.311 | 0 | 0 | 1.97 KB |
#5088 | EnrichedLog |
net6.0 | 2.78μs | 0.894ns | 3.46ns | 0.0209 | 0 | 0 | 1.53 KB |
#5088 | EnrichedLog |
netcoreapp3.1 | 3.96μs | 2.24ns | 8.07ns | 0.0217 | 0 | 0 | 1.58 KB |
#5088 | EnrichedLog |
net472 | 4.46μs | 2.29ns | 8.86ns | 0.312 | 0 | 0 | 1.97 KB |
Benchmarks.Trace.SpanBenchmark - Faster 🎉 Same allocations ✔️
Faster 🎉 in #5088
Benchmark
base/diff
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472
1.123
788.40
702.07
Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472 | 1.123 | 788.40 | 702.07 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | StartFinishSpan |
net6.0 | 513ns | 0.127ns | 0.476ns | 0.00738 | 0 | 0 | 536 B |
master | StartFinishSpan |
netcoreapp3.1 | 739ns | 0.887ns | 3.32ns | 0.00731 | 0 | 0 | 536 B |
master | StartFinishSpan |
net472 | 788ns | 0.314ns | 1.17ns | 0.0853 | 0 | 0 | 538 B |
master | StartFinishScope |
net6.0 | 608ns | 0.267ns | 1.03ns | 0.00914 | 0 | 0 | 656 B |
master | StartFinishScope |
netcoreapp3.1 | 811ns | 0.31ns | 1.2ns | 0.00848 | 0 | 0 | 656 B |
master | StartFinishScope |
net472 | 936ns | 1.05ns | 4.09ns | 0.0981 | 0 | 0 | 618 B |
#5088 | StartFinishSpan |
net6.0 | 517ns | 0.149ns | 0.577ns | 0.00755 | 0 | 0 | 536 B |
#5088 | StartFinishSpan |
netcoreapp3.1 | 697ns | 2.52ns | 9.42ns | 0.00726 | 0 | 0 | 536 B |
#5088 | StartFinishSpan |
net472 | 702ns | 0.169ns | 0.631ns | 0.0852 | 0 | 0 | 538 B |
#5088 | StartFinishScope |
net6.0 | 606ns | 0.189ns | 0.708ns | 0.00908 | 0 | 0 | 656 B |
#5088 | StartFinishScope |
netcoreapp3.1 | 808ns | 1.06ns | 4.12ns | 0.00865 | 0 | 0 | 656 B |
#5088 | StartFinishScope |
net472 | 965ns | 0.354ns | 1.37ns | 0.0981 | 0 | 0 | 618 B |
Benchmarks.Trace.TraceAnnotationsBenchmark - Slower ⚠️ Same allocations ✔️
Slower ⚠️ in #5088
Benchmark
diff/base
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑netcoreapp3.1
1.158
858.63
993.93
Faster 🎉 in #5088
Benchmark
base/diff
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net472
1.171
1,232.74
1,052.46
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0
1.166
747.69
641.21
Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑netcoreapp3.1 | 1.158 | 858.63 | 993.93 |
Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net472 | 1.171 | 1,232.74 | 1,052.46 | |
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 | 1.166 | 747.69 | 641.21 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | RunOnMethodBegin |
net6.0 | 748ns | 0.473ns | 1.83ns | 0.00935 | 0 | 0 | 656 B |
master | RunOnMethodBegin |
netcoreapp3.1 | 863ns | 2.12ns | 8.2ns | 0.00884 | 0 | 0 | 656 B |
master | RunOnMethodBegin |
net472 | 1.23μs | 0.347ns | 1.34ns | 0.0978 | 0 | 0 | 618 B |
#5088 | RunOnMethodBegin |
net6.0 | 641ns | 0.366ns | 1.42ns | 0.00921 | 0 | 0 | 656 B |
#5088 | RunOnMethodBegin |
netcoreapp3.1 | 994ns | 0.376ns | 1.46ns | 0.00894 | 0 | 0 | 656 B |
#5088 | RunOnMethodBegin |
net472 | 1.05μs | 0.406ns | 1.52ns | 0.0977 | 0 | 0 | 618 B |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with one question
internal static CallTargetState OnMethodBegin<TTarget, TArg1>(TTarget instance, ref TArg1 directories) | ||
{ | ||
Common.Log.Debug("Microsoft.VisualStudio.TestPlatform.Common.Utilities.AssemblyResolver.ctor started."); | ||
_callHasBeenCompletedTaskCompletionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any risk of new AssemblyResolver()
being called more than once? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's called twice but for different scenarios, one as of them for the IDE an scenario that is not covered by CI Visibility. So we are safe.
Throughput/Crank Report:zap:Throughput results for AspNetCoreSimpleController comparing the following branches/commits: Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red. Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards! gantt
title Throughput Linux x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (5088) (11.735M) : 0, 11735022
master (11.998M) : 0, 11998376
benchmarks/2.9.0 (11.682M) : 0, 11681575
section Automatic
This PR (5088) (8.077M) : 0, 8076719
master (8.129M) : 0, 8129379
benchmarks/2.9.0 (8.446M) : 0, 8445739
section Trace stats
This PR (5088) (8.325M) : 0, 8325480
master (8.529M) : 0, 8529273
section Manual
This PR (5088) (10.093M) : 0, 10093028
master (10.271M) : 0, 10271133
section Manual + Automatic
This PR (5088) (7.570M) : 0, 7569960
master (7.591M) : 0, 7590530
section Version Conflict
This PR (5088) (6.827M) : 0, 6826622
master (6.907M) : 0, 6906785
gantt
title Throughput Linux arm64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (5088) (9.649M) : 0, 9649178
master (9.594M) : 0, 9593658
benchmarks/2.9.0 (9.657M) : 0, 9656830
section Automatic
This PR (5088) (6.768M) : 0, 6768407
master (6.574M) : 0, 6573613
section Trace stats
This PR (5088) (6.918M) : 0, 6917537
master (6.962M) : 0, 6961649
section Manual
This PR (5088) (8.329M) : 0, 8328542
master (8.281M) : 0, 8281219
section Manual + Automatic
This PR (5088) (6.279M) : 0, 6279092
master (6.258M) : 0, 6258314
section Version Conflict
This PR (5088) (5.766M) : 0, 5766130
master (5.552M) : 0, 5551784
gantt
title Throughput Windows x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (5088) (10.439M) : 0, 10439229
master (10.243M) : 0, 10242543
benchmarks/2.9.0 (10.207M) : 0, 10206890
section Automatic
This PR (5088) (7.057M) : 0, 7056508
master (7.076M) : 0, 7076485
benchmarks/2.9.0 (7.362M) : 0, 7361712
section Trace stats
This PR (5088) (7.469M) : 0, 7469033
master (7.453M) : 0, 7453286
section Manual
This PR (5088) (9.106M) : 0, 9105904
master (8.806M) : 0, 8806398
section Manual + Automatic
This PR (5088) (6.860M) : 0, 6859674
master (6.909M) : 0, 6909369
section Version Conflict
This PR (5088) (6.137M) : 0, 6137352
master (6.090M) : 0, 6090260
gantt
title Throughput Linux x64 (ASM) (Total requests)
dateFormat X
axisFormat %s
section Baseline
master (7.762M) : 0, 7761523
benchmarks/2.9.0 (7.448M) : 0, 7447634
section No attack
master (1.792M) : 0, 1791629
benchmarks/2.9.0 (3.135M) : 0, 3134564
section Attack
master (1.416M) : 0, 1415708
benchmarks/2.9.0 (2.468M) : 0, 2467773
section Blocking
master (3.120M) : 0, 3120029
section IAST default
master (6.490M) : 0, 6489771
section IAST full
master (5.606M) : 0, 5605809
section Base vuln
master (0.943M) : 0, 943169
section IAST vuln
master (0.885M) : 0, 885243
|
Summary of changes
This PR tries to fix #5084 using a different approach.
Reason for change
The solution done in #5084 was just to ignore the issue, in this case we try to instrument the conflict
.ctor
method and make CI Visibility methods to wait until the .ctor is finished (in case of it has been called) to avoid the race condition.Implementation details
We create a new instrumentation to the
AssemblyResolver..ctor
method that has the race condition, we create a TaskContinuationSource and resolve the task after the .ctor code has finished.In the other side we make the async CIVisibility methods that were producing this issue to wait until the .ctor has finished in case is already running.
Test coverage
This scenario is really hard to test due to the race condition, so no new test were added.