-
Notifications
You must be signed in to change notification settings - Fork 144
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
Merge throughput_appsec
into throughput
stage
#4740
Conversation
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 (4740) - mean (70ms) : 62, 78
. : milestone, 70,
master - mean (70ms) : 63, 78
. : milestone, 70,
section CallTarget+Inlining+NGEN
This PR (4740) - mean (1,018ms) : 989, 1047
. : milestone, 1018,
master - mean (1,022ms) : 1000, 1043
. : milestone, 1022,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4740) - mean (106ms) : 103, 109
. : milestone, 106,
master - mean (107ms) : 101, 112
. : milestone, 107,
section CallTarget+Inlining+NGEN
This PR (4740) - mean (712ms) : 688, 736
. : milestone, 712,
master - mean (718ms) : 698, 737
. : milestone, 718,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4740) - mean (91ms) : 88, 93
. : milestone, 91,
master - mean (90ms) : 84, 96
. : milestone, 90,
section CallTarget+Inlining+NGEN
This PR (4740) - mean (682ms) : 669, 696
. : milestone, 682,
master - mean (686ms) : 661, 711
. : milestone, 686,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4740) - mean (188ms) : 185, 190
. : milestone, 188,
master - mean (188ms) : 186, 190
. : milestone, 188,
section CallTarget+Inlining+NGEN
This PR (4740) - mean (1,125ms) : 1103, 1147
. : milestone, 1125,
master - mean (1,127ms) : 1106, 1149
. : milestone, 1127,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4740) - mean (272ms) : 268, 276
. : milestone, 272,
master - mean (272ms) : 268, 277
. : milestone, 272,
section CallTarget+Inlining+NGEN
This PR (4740) - mean (1,086ms) : 1058, 1115
. : milestone, 1086,
master - mean (1,087ms) : 1056, 1118
. : milestone, 1087,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4740) - mean (261ms) : 258, 264
. : milestone, 261,
master - mean (261ms) : 256, 267
. : milestone, 261,
section CallTarget+Inlining+NGEN
This PR (4740) - mean (1,054ms) : 1035, 1074
. : milestone, 1054,
master - mean (1,050ms) : 1028, 1073
. : milestone, 1050,
|
Datadog ReportBranch report: ✅ |
Benchmarks Report 🐌Benchmarks for #4740 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‑net6.0 | 1.235 | 156.04 | 126.35 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | AllCycleSimpleBody |
net6.0 | 41.8μs | 18.6ns | 72.1ns | 0.0209 | 0 | 0 | 2.03 KB |
master | AllCycleSimpleBody |
netcoreapp3.1 | 45.3μs | 99.2ns | 371ns | 0.0224 | 0 | 0 | 2.01 KB |
master | AllCycleSimpleBody |
net472 | 46.8μs | 40.2ns | 156ns | 0.325 | 0 | 0 | 2.08 KB |
master | AllCycleMoreComplexBody |
net6.0 | 230μs | 90.4ns | 350ns | 0.115 | 0 | 0 | 8.63 KB |
master | AllCycleMoreComplexBody |
netcoreapp3.1 | 233μs | 118ns | 456ns | 0.119 | 0 | 0 | 8.52 KB |
master | AllCycleMoreComplexBody |
net472 | 239μs | 111ns | 431ns | 1.31 | 0 | 0 | 8.7 KB |
master | ObjectExtractorSimpleBody |
net6.0 | 156ns | 0.0384ns | 0.144ns | 0.00394 | 0 | 0 | 280 B |
master | ObjectExtractorSimpleBody |
netcoreapp3.1 | 173ns | 0.223ns | 0.865ns | 0.00375 | 0 | 0 | 272 B |
master | ObjectExtractorSimpleBody |
net472 | 150ns | 0.0829ns | 0.31ns | 0.0446 | 0 | 0 | 281 B |
master | ObjectExtractorMoreComplexBody |
net6.0 | 3.07μs | 0.943ns | 3.53ns | 0.0536 | 0 | 0 | 3.88 KB |
master | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 4.08μs | 2.15ns | 8.32ns | 0.0514 | 0 | 0 | 3.78 KB |
master | ObjectExtractorMoreComplexBody |
net472 | 4.1μs | 1.99ns | 7.71ns | 0.617 | 0.00617 | 0 | 3.89 KB |
#4740 | AllCycleSimpleBody |
net6.0 | 43.6μs | 34.3ns | 133ns | 0.0212 | 0 | 0 | 2.03 KB |
#4740 | AllCycleSimpleBody |
netcoreapp3.1 | 45.5μs | 36.7ns | 137ns | 0.0227 | 0 | 0 | 2.01 KB |
#4740 | AllCycleSimpleBody |
net472 | 47.3μs | 47.9ns | 185ns | 0.314 | 0 | 0 | 2.08 KB |
#4740 | AllCycleMoreComplexBody |
net6.0 | 228μs | 116ns | 434ns | 0.117 | 0 | 0 | 8.63 KB |
#4740 | AllCycleMoreComplexBody |
netcoreapp3.1 | 235μs | 193ns | 722ns | 0.117 | 0 | 0 | 8.52 KB |
#4740 | AllCycleMoreComplexBody |
net472 | 237μs | 79.4ns | 297ns | 1.3 | 0 | 0 | 8.7 KB |
#4740 | ObjectExtractorSimpleBody |
net6.0 | 126ns | 0.0601ns | 0.225ns | 0.00396 | 0 | 0 | 280 B |
#4740 | ObjectExtractorSimpleBody |
netcoreapp3.1 | 177ns | 0.0726ns | 0.281ns | 0.00372 | 0 | 0 | 272 B |
#4740 | ObjectExtractorSimpleBody |
net472 | 149ns | 0.0986ns | 0.382ns | 0.0446 | 0 | 0 | 281 B |
#4740 | ObjectExtractorMoreComplexBody |
net6.0 | 3.02μs | 1.46ns | 5.46ns | 0.0545 | 0 | 0 | 3.88 KB |
#4740 | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 4.17μs | 1.16ns | 4.5ns | 0.0521 | 0 | 0 | 3.78 KB |
#4740 | ObjectExtractorMoreComplexBody |
net472 | 4.12μs | 2.15ns | 8.33ns | 0.618 | 0.00618 | 0 | 3.89 KB |
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | RunWaf(args=NestedMap (10)) |
net6.0 | 12.8μs | 3.74ns | 14ns | 0.134 | 0 | 0 | 9.42 KB |
master | RunWaf(args=NestedMap (10)) |
netcoreapp3.1 | 19.7μs | 12.5ns | 48.5ns | 0.127 | 0 | 0 | 9.42 KB |
master | RunWaf(args=NestedMap (10)) |
net472 | 28.4μs | 10.6ns | 39.6ns | 1.49 | 0 | 0 | 9.48 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 75.9μs | 41.1ns | 154ns | 0.195 | 0 | 0 | 15.77 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 86.6μs | 148ns | 574ns | 0.175 | 0 | 0 | 15.72 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 97.1μs | 44.1ns | 159ns | 2.53 | 0 | 0 | 16.04 KB |
master | RunWaf(args=NestedMap (100)) |
net6.0 | 24.2μs | 9.61ns | 36ns | 0.268 | 0 | 0 | 19.66 KB |
master | RunWaf(args=NestedMap (100)) |
netcoreapp3.1 | 38.2μs | 17.1ns | 66.3ns | 0.268 | 0 | 0 | 20.42 KB |
master | RunWaf(args=NestedMap (100)) |
net472 | 54.8μs | 19.5ns | 75.4ns | 3.25 | 0.0274 | 0 | 20.63 KB |
master | RunWafWithAttack(args=Neste(...)tack) [23]) |
net6.0 | 92.8μs | 31.5ns | 122ns | 0.37 | 0 | 0 | 26.01 KB |
master | RunWafWithAttack(args=Neste(...)tack) [23]) |
netcoreapp3.1 | 111μs | 50.3ns | 181ns | 0.33 | 0 | 0 | 26.72 KB |
master | RunWafWithAttack(args=Neste(...)tack) [23]) |
net472 | 130μs | 54.6ns | 197ns | 4.29 | 0.065 | 0 | 27.19 KB |
master | RunWaf(args=NestedMap (20)) |
net6.0 | 25.2μs | 7.11ns | 27.5ns | 0.265 | 0 | 0 | 19.4 KB |
master | RunWaf(args=NestedMap (20)) |
netcoreapp3.1 | 37.8μs | 12.4ns | 48ns | 0.264 | 0 | 0 | 19.84 KB |
master | RunWaf(args=NestedMap (20)) |
net472 | 53.5μs | 22.1ns | 85.7ns | 3.18 | 0.0534 | 0 | 20.04 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 90.8μs | 31.6ns | 122ns | 0.362 | 0 | 0 | 25.74 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 108μs | 171ns | 662ns | 0.321 | 0 | 0 | 26.14 KB |
master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 129μs | 56.8ns | 205ns | 4.21 | 0.0647 | 0 | 26.6 KB |
#4740 | RunWaf(args=NestedMap (10)) |
net6.0 | 12.8μs | 3.68ns | 13.8ns | 0.134 | 0 | 0 | 9.42 KB |
#4740 | RunWaf(args=NestedMap (10)) |
netcoreapp3.1 | 19.6μs | 4.39ns | 16.4ns | 0.128 | 0 | 0 | 9.42 KB |
#4740 | RunWaf(args=NestedMap (10)) |
net472 | 28.4μs | 9.96ns | 38.6ns | 1.5 | 0 | 0 | 9.48 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 76.2μs | 65.7ns | 246ns | 0.229 | 0 | 0 | 15.77 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 86.3μs | 161ns | 601ns | 0.17 | 0 | 0 | 15.72 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 99μs | 166ns | 643ns | 2.53 | 0 | 0 | 16.04 KB |
#4740 | RunWaf(args=NestedMap (100)) |
net6.0 | 24.4μs | 6.65ns | 24.9ns | 0.278 | 0 | 0 | 19.66 KB |
#4740 | RunWaf(args=NestedMap (100)) |
netcoreapp3.1 | 38.1μs | 15.4ns | 57.5ns | 0.267 | 0 | 0 | 20.42 KB |
#4740 | RunWaf(args=NestedMap (100)) |
net472 | 54.6μs | 12ns | 41.4ns | 3.26 | 0.0274 | 0 | 20.63 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [23]) |
net6.0 | 92μs | 158ns | 590ns | 0.325 | 0 | 0 | 26.01 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [23]) |
netcoreapp3.1 | 107μs | 97.7ns | 378ns | 0.32 | 0 | 0 | 26.72 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [23]) |
net472 | 132μs | 191ns | 741ns | 4.26 | 0.0655 | 0 | 27.19 KB |
#4740 | RunWaf(args=NestedMap (20)) |
net6.0 | 23.6μs | 7.51ns | 28.1ns | 0.271 | 0 | 0 | 19.4 KB |
#4740 | RunWaf(args=NestedMap (20)) |
netcoreapp3.1 | 37.5μs | 8.41ns | 32.6ns | 0.263 | 0 | 0 | 19.84 KB |
#4740 | RunWaf(args=NestedMap (20)) |
net472 | 55.6μs | 14.1ns | 52.7ns | 3.18 | 0.0558 | 0 | 20.04 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 92.8μs | 38.3ns | 148ns | 0.324 | 0 | 0 | 25.74 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 108μs | 133ns | 514ns | 0.321 | 0 | 0 | 26.14 KB |
#4740 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 132μs | 64.2ns | 240ns | 4.22 | 0.0649 | 0 | 26.6 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 | 167μs | 226ns | 877ns | 0.166 | 0 | 0 | 18.04 KB |
master | SendRequest |
netcoreapp3.1 | 190μs | 267ns | 1.04μs | 0.189 | 0 | 0 | 20.2 KB |
master | SendRequest |
net472 | 0.000613ns | 0.000219ns | 0.000847ns | 0 | 0 | 0 | 0 b |
#4740 | SendRequest |
net6.0 | 168μs | 171ns | 638ns | 0.254 | 0 | 0 | 18.04 KB |
#4740 | SendRequest |
netcoreapp3.1 | 188μs | 307ns | 1.19μs | 0.19 | 0 | 0 | 20.2 KB |
#4740 | SendRequest |
net472 | 0.000104ns | 0.000104ns | 0.000389ns | 0 | 0 | 0 | 0 b |
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | WriteAndFlushEnrichedTraces |
net6.0 | 533μs | 322ns | 1.25μs | 0.539 | 0 | 0 | 41.38 KB |
master | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 662μs | 1.74μs | 6.72μs | 0.329 | 0 | 0 | 41.78 KB |
master | WriteAndFlushEnrichedTraces |
net472 | 869μs | 4.11μs | 15.9μs | 8.19 | 2.59 | 0.431 | 53.25 KB |
#4740 | WriteAndFlushEnrichedTraces |
net6.0 | 543μs | 1.15μs | 4.46μs | 0.548 | 0 | 0 | 41.47 KB |
#4740 | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 643μs | 774ns | 3μs | 0.326 | 0 | 0 | 41.67 KB |
#4740 | WriteAndFlushEnrichedTraces |
net472 | 844μs | 3.43μs | 12.8μs | 8.13 | 2.57 | 0.428 | 53.24 KB |
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | ExecuteNonQuery |
net6.0 | 1.03μs | 0.92ns | 3.56ns | 0.0104 | 0 | 0 | 768 B |
master | ExecuteNonQuery |
netcoreapp3.1 | 1.25μs | 2.13ns | 8.24ns | 0.0105 | 0 | 0 | 768 B |
master | ExecuteNonQuery |
net472 | 1.61μs | 0.509ns | 1.84ns | 0.116 | 0 | 0 | 730 B |
#4740 | ExecuteNonQuery |
net6.0 | 1.01μs | 0.274ns | 0.948ns | 0.0107 | 0 | 0 | 768 B |
#4740 | ExecuteNonQuery |
netcoreapp3.1 | 1.37μs | 0.904ns | 3.5ns | 0.0101 | 0 | 0 | 768 B |
#4740 | ExecuteNonQuery |
net472 | 1.63μs | 0.667ns | 2.58ns | 0.116 | 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.08μs | 0.566ns | 2.19ns | 0.0131 | 0 | 0 | 936 B |
master | CallElasticsearch |
netcoreapp3.1 | 1.38μs | 2.39ns | 9.24ns | 0.0126 | 0 | 0 | 936 B |
master | CallElasticsearch |
net472 | 2.48μs | 0.762ns | 2.95ns | 0.152 | 0 | 0 | 955 B |
master | CallElasticsearchAsync |
net6.0 | 1.37μs | 1.36ns | 5.25ns | 0.0124 | 0 | 0 | 912 B |
master | CallElasticsearchAsync |
netcoreapp3.1 | 1.49μs | 0.711ns | 2.56ns | 0.0132 | 0 | 0 | 984 B |
master | CallElasticsearchAsync |
net472 | 2.56μs | 0.939ns | 3.64ns | 0.16 | 0 | 0 | 1.01 KB |
#4740 | CallElasticsearch |
net6.0 | 1.12μs | 0.552ns | 2.14ns | 0.013 | 0 | 0 | 936 B |
#4740 | CallElasticsearch |
netcoreapp3.1 | 1.5μs | 1.26ns | 4.88ns | 0.0128 | 0 | 0 | 936 B |
#4740 | CallElasticsearch |
net472 | 2.37μs | 0.403ns | 1.45ns | 0.151 | 0 | 0 | 955 B |
#4740 | CallElasticsearchAsync |
net6.0 | 1.28μs | 0.857ns | 3.32ns | 0.0127 | 0 | 0 | 912 B |
#4740 | CallElasticsearchAsync |
netcoreapp3.1 | 1.52μs | 0.769ns | 2.98ns | 0.0131 | 0 | 0 | 984 B |
#4740 | CallElasticsearchAsync |
net472 | 2.55μs | 0.666ns | 2.4ns | 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.24μs | 1.34ns | 5.2ns | 0.0125 | 0 | 0 | 912 B |
master | ExecuteAsync |
netcoreapp3.1 | 1.55μs | 0.909ns | 3.52ns | 0.0124 | 0 | 0 | 912 B |
master | ExecuteAsync |
net472 | 1.7μs | 0.595ns | 2.22ns | 0.139 | 0.000851 | 0 | 875 B |
#4740 | ExecuteAsync |
net6.0 | 1.16μs | 0.641ns | 2.4ns | 0.0128 | 0 | 0 | 912 B |
#4740 | ExecuteAsync |
netcoreapp3.1 | 1.45μs | 1.3ns | 4.86ns | 0.0122 | 0 | 0 | 912 B |
#4740 | ExecuteAsync |
net472 | 1.74μs | 0.753ns | 2.82ns | 0.139 | 0.000868 | 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.84μs | 3.88ns | 15ns | 0.0271 | 0 | 0 | 1.9 KB |
master | SendAsync |
netcoreapp3.1 | 4.34μs | 1.99ns | 7.19ns | 0.0324 | 0 | 0 | 2.43 KB |
master | SendAsync |
net472 | 7.06μs | 1.28ns | 4.62ns | 0.475 | 0 | 0 | 2.99 KB |
#4740 | SendAsync |
net6.0 | 3.66μs | 1.05ns | 3.92ns | 0.0258 | 0 | 0 | 1.9 KB |
#4740 | SendAsync |
netcoreapp3.1 | 4.32μs | 6.47ns | 24.2ns | 0.0325 | 0 | 0 | 2.43 KB |
#4740 | SendAsync |
net472 | 6.99μs | 1.55ns | 5.81ns | 0.473 | 0 | 0 | 2.99 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.34μs | 0.547ns | 2.05ns | 0.022 | 0 | 0 | 1.57 KB |
master | EnrichedLog |
netcoreapp3.1 | 1.93μs | 0.624ns | 2.34ns | 0.0212 | 0 | 0 | 1.57 KB |
master | EnrichedLog |
net472 | 2.33μs | 1.31ns | 5.09ns | 0.236 | 0 | 0 | 1.49 KB |
#4740 | EnrichedLog |
net6.0 | 1.31μs | 0.577ns | 2.23ns | 0.0221 | 0 | 0 | 1.57 KB |
#4740 | EnrichedLog |
netcoreapp3.1 | 2μs | 1.31ns | 5.06ns | 0.021 | 0 | 0 | 1.57 KB |
#4740 | EnrichedLog |
net472 | 2.18μs | 1.65ns | 6.17ns | 0.237 | 0 | 0 | 1.49 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 | 111μs | 79.6ns | 298ns | 0.0559 | 0 | 0 | 4.21 KB |
master | EnrichedLog |
netcoreapp3.1 | 116μs | 120ns | 448ns | 0 | 0 | 0 | 4.21 KB |
master | EnrichedLog |
net472 | 146μs | 108ns | 418ns | 0.658 | 0.219 | 0 | 4.38 KB |
#4740 | EnrichedLog |
net6.0 | 113μs | 188ns | 729ns | 0.0559 | 0 | 0 | 4.21 KB |
#4740 | EnrichedLog |
netcoreapp3.1 | 117μs | 175ns | 679ns | 0 | 0 | 0 | 4.21 KB |
#4740 | EnrichedLog |
net472 | 146μs | 50.9ns | 190ns | 0.682 | 0.227 | 0 | 4.38 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.06μs | 0.948ns | 3.55ns | 0.0305 | 0 | 0 | 2.13 KB |
master | EnrichedLog |
netcoreapp3.1 | 3.95μs | 2.31ns | 8.96ns | 0.0293 | 0 | 0 | 2.13 KB |
master | EnrichedLog |
net472 | 4.7μs | 1.64ns | 6.12ns | 0.305 | 0 | 0 | 1.93 KB |
#4740 | EnrichedLog |
net6.0 | 2.93μs | 1.15ns | 4.14ns | 0.0306 | 0 | 0 | 2.13 KB |
#4740 | EnrichedLog |
netcoreapp3.1 | 3.98μs | 0.722ns | 2.6ns | 0.0278 | 0 | 0 | 2.13 KB |
#4740 | EnrichedLog |
net472 | 4.58μs | 1.32ns | 5.11ns | 0.307 | 0 | 0 | 1.93 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.29μs | 0.895ns | 3.47ns | 0.0155 | 0 | 0 | 1.1 KB |
master | SendReceive |
netcoreapp3.1 | 1.65μs | 0.564ns | 2.03ns | 0.015 | 0 | 0 | 1.1 KB |
master | SendReceive |
net472 | 1.98μs | 0.691ns | 2.59ns | 0.177 | 0 | 0 | 1.12 KB |
#4740 | SendReceive |
net6.0 | 1.25μs | 0.838ns | 3.25ns | 0.0154 | 0 | 0 | 1.1 KB |
#4740 | SendReceive |
netcoreapp3.1 | 1.6μs | 0.898ns | 3.48ns | 0.0151 | 0 | 0 | 1.1 KB |
#4740 | SendReceive |
net472 | 1.96μs | 1.1ns | 4.25ns | 0.177 | 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.46μs | 0.522ns | 2.02ns | 0.0209 | 0 | 0 | 1.53 KB |
master | EnrichedLog |
netcoreapp3.1 | 3.5μs | 1.66ns | 6.41ns | 0.021 | 0 | 0 | 1.58 KB |
master | EnrichedLog |
net472 | 4.11μs | 1.51ns | 5.87ns | 0.31 | 0 | 0 | 1.96 KB |
#4740 | EnrichedLog |
net6.0 | 2.66μs | 1.35ns | 5.23ns | 0.0213 | 0 | 0 | 1.53 KB |
#4740 | EnrichedLog |
netcoreapp3.1 | 3.69μs | 4.45ns | 17.2ns | 0.0202 | 0 | 0 | 1.58 KB |
#4740 | EnrichedLog |
net472 | 4.02μs | 0.982ns | 3.68ns | 0.31 | 0 | 0 | 1.96 KB |
Benchmarks.Trace.SpanBenchmark - Slower ⚠️ Same allocations ✔️
Slower ⚠️ in #4740
Benchmark
diff/base
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472
1.182
582.78
688.75
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0
1.177
381.15
448.45
Faster 🎉 in #4740
Benchmark
base/diff
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net6.0
1.172
590.57
503.73
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net472
1.153
917.79
795.90
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑netcoreapp3.1
1.143
758.15
663.45
Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472 | 1.182 | 582.78 | 688.75 | |
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 | 1.177 | 381.15 | 448.45 |
Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
---|---|---|---|---|
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net6.0 | 1.172 | 590.57 | 503.73 | |
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net472 | 1.153 | 917.79 | 795.90 | |
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑netcoreapp3.1 | 1.143 | 758.15 | 663.45 |
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | StartFinishSpan |
net6.0 | 381ns | 0.163ns | 0.61ns | 0.00757 | 0 | 0 | 536 B |
master | StartFinishSpan |
netcoreapp3.1 | 535ns | 0.206ns | 0.771ns | 0.00725 | 0 | 0 | 536 B |
master | StartFinishSpan |
net472 | 583ns | 0.161ns | 0.622ns | 0.0852 | 0 | 0 | 538 B |
master | StartFinishScope |
net6.0 | 591ns | 0.263ns | 0.948ns | 0.00918 | 0 | 0 | 656 B |
master | StartFinishScope |
netcoreapp3.1 | 758ns | 0.339ns | 1.31ns | 0.00875 | 0 | 0 | 656 B |
master | StartFinishScope |
net472 | 918ns | 0.28ns | 1.01ns | 0.0981 | 0 | 0 | 618 B |
#4740 | StartFinishSpan |
net6.0 | 448ns | 0.095ns | 0.355ns | 0.00743 | 0 | 0 | 536 B |
#4740 | StartFinishSpan |
netcoreapp3.1 | 505ns | 0.121ns | 0.453ns | 0.00711 | 0 | 0 | 536 B |
#4740 | StartFinishSpan |
net472 | 689ns | 0.256ns | 0.991ns | 0.0853 | 0 | 0 | 538 B |
#4740 | StartFinishScope |
net6.0 | 504ns | 0.106ns | 0.395ns | 0.00931 | 0 | 0 | 656 B |
#4740 | StartFinishScope |
netcoreapp3.1 | 664ns | 0.263ns | 0.984ns | 0.00875 | 0 | 0 | 656 B |
#4740 | StartFinishScope |
net472 | 796ns | 0.835ns | 3.24ns | 0.0981 | 0 | 0 | 618 B |
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|
master | RunOnMethodBegin |
net6.0 | 591ns | 0.227ns | 0.878ns | 0.00926 | 0 | 0 | 656 B |
master | RunOnMethodBegin |
netcoreapp3.1 | 799ns | 2.17ns | 7.5ns | 0.00893 | 0 | 0 | 656 B |
master | RunOnMethodBegin |
net472 | 1.04μs | 0.368ns | 1.42ns | 0.0977 | 0 | 0 | 618 B |
#4740 | RunOnMethodBegin |
net6.0 | 629ns | 0.149ns | 0.578ns | 0.00917 | 0 | 0 | 656 B |
#4740 | RunOnMethodBegin |
netcoreapp3.1 | 833ns | 0.248ns | 0.926ns | 0.00877 | 0 | 0 | 656 B |
#4740 | RunOnMethodBegin |
net472 | 1.07μs | 1.04ns | 3.88ns | 0.098 | 0 | 0 | 618 B |
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 (4740) (11.417M) : 0, 11417072
master (11.109M) : 0, 11108605
benchmarks/2.38.0 (11.867M) : 0, 11866956
benchmarks/2.9.0 (10.896M) : 0, 10896496
section Automatic
This PR (4740) (7.964M) : 0, 7963854
master (7.750M) : 0, 7750268
benchmarks/2.38.0 (8.176M) : 0, 8175636
benchmarks/2.9.0 (8.125M) : 0, 8125054
section Trace stats
This PR (4740) (8.275M) : 0, 8274587
master (8.109M) : 0, 8108510
benchmarks/2.38.0 (8.450M) : 0, 8450370
section Manual
This PR (4740) (10.115M) : 0, 10115184
master (10.073M) : 0, 10073279
benchmarks/2.38.0 (10.334M) : 0, 10334368
section Manual + Automatic
This PR (4740) (7.514M) : 0, 7513500
master (7.455M) : 0, 7455042
benchmarks/2.38.0 (7.750M) : 0, 7750484
section Version Conflict
This PR (4740) (6.828M) : 0, 6827966
master (6.865M) : 0, 6865195
benchmarks/2.38.0 (7.137M) : 0, 7136691
gantt
title Throughput Linux arm64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (4740) (9.395M) : 0, 9394634
master (9.590M) : 0, 9589958
benchmarks/2.38.0 (9.548M) : 0, 9548121
benchmarks/2.9.0 (9.477M) : 0, 9477392
section Automatic
This PR (4740) (6.669M) : 0, 6669152
master (6.691M) : 0, 6691177
benchmarks/2.38.0 (6.747M) : 0, 6747227
section Trace stats
This PR (4740) (6.874M) : 0, 6873507
master (7.023M) : 0, 7022949
benchmarks/2.38.0 (6.815M) : 0, 6814846
section Manual
This PR (4740) (8.335M) : 0, 8335065
master (8.410M) : 0, 8410093
benchmarks/2.38.0 (8.263M) : 0, 8263131
section Manual + Automatic
This PR (4740) (6.417M) : 0, 6416863
master (6.345M) : 0, 6344795
benchmarks/2.38.0 (6.275M) : 0, 6275411
section Version Conflict
This PR (4740) (5.739M) : 0, 5739167
master (5.807M) : 0, 5807175
benchmarks/2.38.0 (5.670M) : 0, 5669744
gantt
title Throughput Windows x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (4740) (9.497M) : 0, 9497337
master (9.631M) : 0, 9630845
benchmarks/2.38.0 (9.007M) : 0, 9007066
benchmarks/2.9.0 (9.459M) : 0, 9458597
section Automatic
This PR (4740) (6.818M) : 0, 6817539
master (6.673M) : 0, 6673444
benchmarks/2.38.0 (6.423M) : 0, 6422756
benchmarks/2.9.0 (6.995M) : 0, 6994572
section Trace stats
This PR (4740) (7.014M) : 0, 7014080
master (6.954M) : 0, 6954012
benchmarks/2.38.0 (6.721M) : 0, 6720838
section Manual
This PR (4740) (8.367M) : 0, 8366555
master (8.234M) : 0, 8233974
benchmarks/2.38.0 (7.977M) : 0, 7977494
section Manual + Automatic
This PR (4740) (6.478M) : 0, 6478222
master (6.479M) : 0, 6479184
benchmarks/2.38.0 (6.349M) : 0, 6349066
section Version Conflict
This PR (4740) (6.058M) : 0, 6058454
master (5.898M) : 0, 5898107
benchmarks/2.38.0 (5.682M) : 0, 5681654
gantt
title Throughput Linux x64 (ASM) (Total requests)
dateFormat X
axisFormat %s
section Baseline
master (7.474M) : 0, 7473524
benchmarks/2.38.0 (7.578M) : 0, 7577544
benchmarks/2.9.0 (7.897M) : 0, 7897465
section No attack
master (2.191M) : 0, 2191030
benchmarks/2.38.0 (2.184M) : 0, 2184279
benchmarks/2.9.0 (3.208M) : 0, 3207532
section Attack
master (1.738M) : 0, 1737665
benchmarks/2.38.0 (1.711M) : 0, 1710542
benchmarks/2.9.0 (2.553M) : 0, 2553477
section Blocking
master (3.459M) : 0, 3459059
benchmarks/2.38.0 (3.486M) : 0, 3486124
section IAST default
master (6.840M) : 0, 6839830
section IAST full
master (6.232M) : 0, 6231762
section Base vuln
master (0.967M) : 0, 967380
section IAST vuln
master (0.924M) : 0, 924177
|
16352f8
to
e8f8deb
Compare
af8daac
to
b0898a2
Compare
_configurationStatus.Actions = actions; | ||
_configurationStatus.Actions = actions; |
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.
Just to be extra sure:
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; | |
_configurationStatus.Actions = actions; |
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.
😝
b0898a2
to
53d5a78
Compare
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. Very useful for ASM. Thank you!!!
53d5a78
to
2845b3a
Compare
79a6e57
to
717c963
Compare
Summary of changes
Does what it says on the tin.
Reason for change
In AzureDevops all the dependencies of a stage need to run before the stage runs. Unfortunately, that falls apart if you want to conditionally run a stage (as we do with
throughput_appsec
). That requires a bunch of gymnastics to make things workImplementation details
Move the AppSec job into the Throughput stage. We are still using separate jobs, so there's no impact on the tracer throughput tests - they're still independent. But as the
throughput
stage always runs, we don't have to do anything weird to make surecompare_throughput
runs.The only "regression" is that the
throughput
stage depends on:whereas
throughput_appsec
previously did not depend on the windows or arm64 buildsThis probably isn't a big issue for ASM, but it's the only thing that could impact the change
Test coverage
Other details
Stacked on
compare_throughput
stage more robust #4739