Skip to content

Add support for VS 2026 to Nuke detection#7843

Merged
andrewlock merged 1 commit intomasterfrom
andrew/add-vs-2026-detection
Nov 21, 2025
Merged

Add support for VS 2026 to Nuke detection#7843
andrewlock merged 1 commit intomasterfrom
andrew/add-vs-2026-detection

Conversation

@andrewlock
Copy link
Member

Summary of changes

Add VS 2026 search paths

Reason for change

We should be able to build with VS 2026

Implementation details

Add "18" to the search paths (which is what VS 2026 uses)

Test coverage

Going to poke @vandonr 😄

@andrewlock andrewlock requested a review from a team as a code owner November 19, 2025 15:53
@andrewlock andrewlock added the area:builds project files, build scripts, pipelines, versioning, releases, packages label Nov 19, 2025
@andrewlock andrewlock force-pushed the andrew/add-vs-2026-detection branch from 424e12b to f1a4c5f Compare November 19, 2025 15:53
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@pr-commenter
Copy link

pr-commenter bot commented Nov 19, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7843 compared to master:

  • 3 benchmarks are faster, with geometric mean 1.401
  • 1 benchmarks are slower, with geometric mean 1.299
  • 3 benchmarks have fewer allocations
  • 5 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 ✔️ More allocations ⚠️

More allocations ⚠️ in #7843

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.07 KB 6.12 KB 46 B 0.76%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.5μs 59.4ns 390ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 15μs 75.5ns 346ns 0 0 0 5.68 KB
master StartStopWithChild net472 21.7μs 121ns 773ns 0.994 0.331 0.11 6.07 KB
#7843 StartStopWithChild net6.0 10.6μs 58.6ns 342ns 0 0 0 5.53 KB
#7843 StartStopWithChild netcoreapp3.1 13.9μs 65.7ns 263ns 0 0 0 5.69 KB
#7843 StartStopWithChild net472 22.9μs 123ns 687ns 0.958 0.319 0 6.12 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 945μs 328ns 1.27μs 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 154ns 596ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.24ms 2.54μs 9.83μs 0 0 0 3.31 KB
#7843 WriteAndFlushEnrichedTraces net6.0 932μs 60.7ns 219ns 0 0 0 2.71 KB
#7843 WriteAndFlushEnrichedTraces netcoreapp3.1 1.01ms 87.8ns 304ns 0 0 0 2.7 KB
#7843 WriteAndFlushEnrichedTraces net472 1.23ms 813ns 3.15μs 0 0 0 3.31 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 1.08μs 5.6ns 28ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.41μs 7.69ns 45.5ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.353ns 1.37ns 0.191 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.13μs 38.9ns 187ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 8.97μs 31.5ns 122ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.79μs 6.58ns 25.5ns 0.74 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 317ns 1.41ns 5.26ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 398ns 2.12ns 11.2ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 294ns 0.0455ns 0.17ns 0.0444 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.29μs 22.5ns 87ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.8μs 29.9ns 112ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.81μs 8.08ns 31.3ns 0.575 0 0 3.8 KB
#7843 AllCycleSimpleBody net6.0 1.09μs 6.12ns 42.4ns 0 0 0 1.22 KB
#7843 AllCycleSimpleBody netcoreapp3.1 1.35μs 7.43ns 45.8ns 0 0 0 1.2 KB
#7843 AllCycleSimpleBody net472 1.04μs 0.26ns 0.937ns 0.193 0 0 1.23 KB
#7843 AllCycleMoreComplexBody net6.0 7.4μs 39ns 203ns 0 0 0 4.72 KB
#7843 AllCycleMoreComplexBody netcoreapp3.1 8.94μs 36.4ns 141ns 0 0 0 4.62 KB
#7843 AllCycleMoreComplexBody net472 7.75μs 4.88ns 18.9ns 0.732 0 0 4.74 KB
#7843 ObjectExtractorSimpleBody net6.0 314ns 1.72ns 10.3ns 0 0 0 280 B
#7843 ObjectExtractorSimpleBody netcoreapp3.1 385ns 2.22ns 15.8ns 0 0 0 272 B
#7843 ObjectExtractorSimpleBody net472 304ns 0.0183ns 0.0661ns 0.0436 0 0 281 B
#7843 ObjectExtractorMoreComplexBody net6.0 6.34μs 32.2ns 137ns 0 0 0 3.78 KB
#7843 ObjectExtractorMoreComplexBody netcoreapp3.1 7.89μs 35.7ns 138ns 0 0 0 3.69 KB
#7843 ObjectExtractorMoreComplexBody net472 6.78μs 9.85ns 38.1ns 0.574 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 77.2μs 39.6ns 148ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.1μs 250ns 968ns 0 0 0 32.4 KB
master EncodeArgs net472 112μs 43.3ns 168ns 5.05 0 0 32.51 KB
master EncodeLegacyArgs net6.0 142μs 148ns 575ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 200μs 103ns 387ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 264μs 27.9ns 108ns 0 0 0 2.17 KB
#7843 EncodeArgs net6.0 77.2μs 136ns 509ns 0 0 0 32.4 KB
#7843 EncodeArgs netcoreapp3.1 97.1μs 291ns 1.13μs 0 0 0 32.4 KB
#7843 EncodeArgs net472 108μs 11.9ns 46.1ns 4.89 0 0 32.51 KB
#7843 EncodeLegacyArgs net6.0 145μs 35.9ns 139ns 0 0 0 2.14 KB
#7843 EncodeLegacyArgs netcoreapp3.1 199μs 245ns 917ns 0 0 0 2.14 KB
#7843 EncodeLegacyArgs net472 265μs 213ns 823ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7843

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.083 859,332.40 412,578.44

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 398μs 90.6ns 339ns 0 0 0 4.56 KB
master RunWafRealisticBenchmark netcoreapp3.1 851μs 5.39μs 53.7μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 427μs 67.7ns 262ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 283μs 51.2ns 198ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 299μs 67.7ns 253ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 310μs 25.5ns 98.7ns 0 0 0 2.29 KB
#7843 RunWafRealisticBenchmark net6.0 392μs 46.3ns 173ns 0 0 0 4.55 KB
#7843 RunWafRealisticBenchmark netcoreapp3.1 412μs 92.2ns 357ns 0 0 0 4.48 KB
#7843 RunWafRealisticBenchmark net472 430μs 55.5ns 215ns 0 0 0 4.66 KB
#7843 RunWafRealisticBenchmarkWithAttack net6.0 288μs 34.9ns 131ns 0 0 0 2.24 KB
#7843 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 296μs 41.4ns 149ns 0 0 0 2.22 KB
#7843 RunWafRealisticBenchmarkWithAttack net472 311μs 29.5ns 114ns 0 0 0 2.29 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 60.7μs 110ns 427ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.4μs 69.3ns 268ns 0 0 0 17.42 KB
master SendRequest net472 0.00106ns 0.00106ns 0.00411ns 0 0 0 0 b
#7843 SendRequest net6.0 61.8μs 77.9ns 292ns 0 0 0 14.52 KB
#7843 SendRequest netcoreapp3.1 71.9μs 47.3ns 177ns 0 0 0 17.42 KB
#7843 SendRequest net472 0.00315ns 0.00172ns 0.00667ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Slower ⚠️ More allocations ⚠️

Slower ⚠️ in #7843

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1.299 812,208.98 1,055,190.10

Faster 🎉 in #7843

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑netcoreapp3.1 1.169 1,947,717.50 1,665,966.25

More allocations ⚠️ in #7843

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 2 B 5 B 3 B 150.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.92ms 4.01μs 15.5μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.07ms 5.38μs 20.1μs 0 0 0 640 KB
master OriginalCharSlice net472 2.67ms 684ns 2.56μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.37ms 198ns 767ns 0 0 0 4 B
master OptimizedCharSlice netcoreapp3.1 1.95ms 1.52μs 5.9μs 0 0 0 1 B
master OptimizedCharSlice net472 1.97ms 351ns 1.36μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 812μs 45.7ns 177ns 0 0 0 2 B
master OptimizedCharSliceWithPool netcoreapp3.1 818μs 299ns 1.16μs 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.18ms 169ns 608ns 0 0 0 0 b
#7843 OriginalCharSlice net6.0 2.02ms 1.32μs 4.77μs 0 0 0 640.01 KB
#7843 OriginalCharSlice netcoreapp3.1 2.13ms 8.12μs 31.5μs 0 0 0 640 KB
#7843 OriginalCharSlice net472 2.61ms 1.25μs 4.67μs 100 0 0 641.95 KB
#7843 OptimizedCharSlice net6.0 1.36ms 258ns 929ns 0 0 0 4 B
#7843 OptimizedCharSlice netcoreapp3.1 1.67ms 425ns 1.65μs 0 0 0 1 B
#7843 OptimizedCharSlice net472 1.99ms 248ns 961ns 0 0 0 0 b
#7843 OptimizedCharSliceWithPool net6.0 1.06ms 488ns 1.89μs 0 0 0 5 B
#7843 OptimizedCharSliceWithPool netcoreapp3.1 843μs 171ns 661ns 0 0 0 0 b
#7843 OptimizedCharSliceWithPool net472 1.17ms 95.7ns 371ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7843

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 1.128 948,112.95 840,379.17

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 719μs 3.85μs 21.4μs 0 0 0 41.62 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 646μs 3.83μs 27.4μs 0 0 0 42.15 KB
master WriteAndFlushEnrichedTraces net472 952μs 3.95μs 15.3μs 4.46 0 0 56.13 KB
#7843 WriteAndFlushEnrichedTraces net6.0 751μs 4.29μs 30.3μs 0 0 0 41.68 KB
#7843 WriteAndFlushEnrichedTraces netcoreapp3.1 647μs 2.1μs 8.11μs 0 0 0 42.03 KB
#7843 WriteAndFlushEnrichedTraces net472 843μs 3.91μs 15.1μs 8.33 0 0 56.22 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.91μs 2.12ns 7.93ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.58μs 8.39ns 32.5ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.81μs 3.44ns 12.4ns 0.155 0.0141 0 987 B
#7843 ExecuteNonQuery net6.0 1.97μs 3.02ns 11.3ns 0 0 0 1.02 KB
#7843 ExecuteNonQuery netcoreapp3.1 2.54μs 11.6ns 44.8ns 0 0 0 1.02 KB
#7843 ExecuteNonQuery net472 2.82μs 4.64ns 18ns 0.156 0.0141 0 987 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.8μs 2.69ns 10.4ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.21μs 9.68ns 37.5ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.49μs 3.82ns 14.3ns 0.157 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.9μs 7.41ns 28.7ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.44μs 8.61ns 33.3ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.6μs 4.75ns 18.4ns 0.163 0 0 1.1 KB
#7843 CallElasticsearch net6.0 1.68μs 8.41ns 35.7ns 0 0 0 1.03 KB
#7843 CallElasticsearch netcoreapp3.1 2.19μs 1.86ns 7.22ns 0 0 0 1.03 KB
#7843 CallElasticsearch net472 3.62μs 1.27ns 4.9ns 0.163 0 0 1.04 KB
#7843 CallElasticsearchAsync net6.0 1.88μs 9.53ns 41.5ns 0 0 0 1.01 KB
#7843 CallElasticsearchAsync netcoreapp3.1 2.41μs 10.9ns 42.4ns 0 0 0 1.08 KB
#7843 CallElasticsearchAsync net472 3.58μs 0.9ns 3.49ns 0.161 0 0 1.1 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.94μs 2.19ns 8.19ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.43μs 7ns 26.2ns 0 0 0 952 B
master ExecuteAsync net472 2.56μs 0.993ns 3.85ns 0.141 0 0 915 B
#7843 ExecuteAsync net6.0 1.85μs 2.75ns 10.3ns 0 0 0 952 B
#7843 ExecuteAsync netcoreapp3.1 2.49μs 9.93ns 38.5ns 0 0 0 952 B
#7843 ExecuteAsync net472 2.61μs 1.94ns 7.24ns 0.142 0 0 915 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 6.87μs 16ns 60ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.74μs 13.7ns 49.3ns 0 0 0 2.9 KB
master SendAsync net472 12.6μs 11ns 42.4ns 0.503 0 0 3.18 KB
#7843 SendAsync net6.0 7μs 7.62ns 27.5ns 0 0 0 2.36 KB
#7843 SendAsync netcoreapp3.1 8.78μs 9.32ns 36.1ns 0 0 0 2.9 KB
#7843 SendAsync net472 12.2μs 6.75ns 26.1ns 0.49 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7843

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 44.04 KB 86.15 KB 42.11 KB 95.62%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 250.63 KB 274.26 KB 23.63 KB 9.43%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.48 KB 43.78 KB 296 B 0.68%

Fewer allocations 🎉 in #7843

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 286.72 KB 276.48 KB -10.24 KB -3.57%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 274.77 KB 258.06 KB -16.7 KB -6.08%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 65.54 KB 57.34 KB -8.19 KB -12.50%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 43μs 245ns 1.74μs 0 0 0 43.48 KB
master StringConcatBenchmark netcoreapp3.1 49.8μs 192ns 663ns 0 0 0 44.04 KB
master StringConcatBenchmark net472 57.8μs 202ns 730ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 453μs 2.06μs 7.43μs 0 0 0 250.63 KB
master StringConcatAspectBenchmark netcoreapp3.1 521μs 1.83μs 6.35μs 0 0 0 274.77 KB
master StringConcatAspectBenchmark net472 408μs 1.28μs 4.61μs 0 0 0 286.72 KB
#7843 StringConcatBenchmark net6.0 43μs 241ns 1.41μs 0 0 0 43.78 KB
#7843 StringConcatBenchmark netcoreapp3.1 51.1μs 299ns 2.7μs 0 0 0 86.15 KB
#7843 StringConcatBenchmark net472 59μs 297ns 1.3μs 0 0 0 57.34 KB
#7843 StringConcatAspectBenchmark net6.0 489μs 2.49μs 11.1μs 0 0 0 274.26 KB
#7843 StringConcatAspectBenchmark netcoreapp3.1 501μs 1.7μs 6.37μs 0 0 0 258.06 KB
#7843 StringConcatAspectBenchmark net472 410μs 2.25μs 16.1μs 0 0 0 276.48 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 2.66μs 12.9ns 51.8ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.65μs 11.2ns 43.4ns 0 0 0 1.7 KB
master EnrichedLog net472 3.94μs 4.72ns 18.3ns 0.257 0 0 1.64 KB
#7843 EnrichedLog net6.0 2.67μs 14.2ns 60.1ns 0 0 0 1.7 KB
#7843 EnrichedLog netcoreapp3.1 3.61μs 18.7ns 85.7ns 0 0 0 1.7 KB
#7843 EnrichedLog net472 3.93μs 4.61ns 17.8ns 0.256 0 0 1.64 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 123μs 29.2ns 101ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 127μs 49.8ns 172ns 0 0 0 4.31 KB
master EnrichedLog net472 168μs 26.6ns 103ns 0 0 0 4.52 KB
#7843 EnrichedLog net6.0 123μs 98.4ns 381ns 0 0 0 4.31 KB
#7843 EnrichedLog netcoreapp3.1 127μs 178ns 690ns 0 0 0 4.31 KB
#7843 EnrichedLog net472 168μs 37.7ns 146ns 0 0 0 4.52 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 4.94μs 7.43ns 28.8ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.74μs 22.9ns 85.7ns 0 0 0 2.26 KB
master EnrichedLog net472 7.56μs 7.01ns 27.1ns 0.305 0 0 2.08 KB
#7843 EnrichedLog net6.0 5.01μs 26.1ns 128ns 0 0 0 2.26 KB
#7843 EnrichedLog netcoreapp3.1 6.77μs 18.7ns 72.5ns 0 0 0 2.26 KB
#7843 EnrichedLog net472 7.53μs 4.75ns 18.4ns 0.301 0 0 2.08 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.96μs 7.44ns 28.8ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.63μs 10.1ns 38ns 0 0 0 1.2 KB
master SendReceive net472 3.06μs 4.41ns 17.1ns 0.181 0 0 1.2 KB
#7843 SendReceive net6.0 2μs 10.8ns 58.4ns 0 0 0 1.2 KB
#7843 SendReceive netcoreapp3.1 2.69μs 10.9ns 42.4ns 0 0 0 1.2 KB
#7843 SendReceive net472 3.07μs 3.8ns 14.7ns 0.185 0 0 1.2 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 4.31μs 18.4ns 71.3ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.59μs 15.6ns 60.4ns 0 0 0 1.63 KB
master EnrichedLog net472 6.37μs 9.38ns 36.3ns 0.315 0 0 2.03 KB
#7843 EnrichedLog net6.0 4.23μs 8.27ns 30.9ns 0 0 0 1.58 KB
#7843 EnrichedLog netcoreapp3.1 5.47μs 15.5ns 58ns 0 0 0 1.63 KB
#7843 EnrichedLog net472 6.42μs 9.28ns 36ns 0.321 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 796ns 0.287ns 1.11ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 953ns 4.79ns 20.3ns 0 0 0 576 B
master StartFinishSpan net472 960ns 0.208ns 0.805ns 0.091 0 0 578 B
master StartFinishScope net6.0 919ns 4.87ns 24.4ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.18μs 6.14ns 29.5ns 0 0 0 696 B
master StartFinishScope net472 1.13μs 0.234ns 0.877ns 0.102 0 0 658 B
#7843 StartFinishSpan net6.0 787ns 0.338ns 1.31ns 0 0 0 576 B
#7843 StartFinishSpan netcoreapp3.1 1.01μs 5.06ns 23.2ns 0 0 0 576 B
#7843 StartFinishSpan net472 949ns 0.265ns 1.03ns 0.091 0 0 578 B
#7843 StartFinishScope net6.0 927ns 4.51ns 18.6ns 0 0 0 696 B
#7843 StartFinishScope netcoreapp3.1 1.2μs 3.02ns 11.7ns 0 0 0 696 B
#7843 StartFinishScope net472 1.11μs 0.0621ns 0.224ns 0.1 0 0 658 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 1.08μs 5.26ns 24.7ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.42μs 6.6ns 25.6ns 0 0 0 696 B
master RunOnMethodBegin net472 1.45μs 0.225ns 0.78ns 0.102 0 0 658 B
#7843 RunOnMethodBegin net6.0 1.05μs 4.74ns 17.8ns 0 0 0 696 B
#7843 RunOnMethodBegin netcoreapp3.1 1.43μs 7.23ns 33.1ns 0 0 0 696 B
#7843 RunOnMethodBegin net472 1.44μs 0.831ns 3.11ns 0.101 0 0 658 B

@dd-trace-dotnet-ci-bot
Copy link

Execution-Time Benchmarks Report ⏱️

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

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration75.22 ± (74.81 - 75.42) ms75.17 ± (75.36 - 76.20) ms-0.1%
.NET Framework 4.8 - Bailout
duration79.04 ± (79.02 - 79.72) ms80.04 ± (79.86 - 80.66) ms+1.3%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1121.02 ± (1127.17 - 1137.93) ms1122.89 ± (1124.63 - 1135.40) ms+0.2%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.94 ± (22.86 - 23.02) ms22.93 ± (22.86 - 23.00) ms-0.0%
process.time_to_main_ms87.88 ± (87.55 - 88.22) ms87.07 ± (86.70 - 87.43) ms-0.9%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.93 ± (10.92 - 10.93) MB10.92 ± (10.91 - 10.92) MB-0.1%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms23.03 ± (22.95 - 23.11) ms22.85 ± (22.76 - 22.94) ms-0.8%
process.time_to_main_ms90.06 ± (89.69 - 90.43) ms88.52 ± (88.03 - 89.02) ms-1.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.97 ± (10.97 - 10.98) MB10.96 ± (10.96 - 10.96) MB-0.1%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms220.97 ± (219.51 - 222.43) ms220.71 ± (219.33 - 222.08) ms-0.1%
process.time_to_main_ms550.54 ± (549.37 - 551.71) ms551.12 ± (549.65 - 552.59) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.54 ± (52.52 - 52.56) MB52.45 ± (52.43 - 52.47) MB-0.2%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms22.11 ± (22.05 - 22.18) ms21.89 ± (21.81 - 21.97) ms-1.0%
process.time_to_main_ms78.46 ± (78.11 - 78.81) ms77.55 ± (77.11 - 77.98) ms-1.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.61 - 10.62) MB10.63 ± (10.63 - 10.63) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.61 ± (21.55 - 21.67) ms21.79 ± (21.71 - 21.86) ms+0.8%✅⬆️
process.time_to_main_ms77.44 ± (77.18 - 77.71) ms78.96 ± (78.54 - 79.39) ms+2.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.66 ± (10.65 - 10.66) MB10.66 ± (10.66 - 10.67) MB+0.1%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms207.34 ± (206.12 - 208.57) ms207.19 ± (205.78 - 208.61) ms-0.1%
process.time_to_main_ms517.03 ± (516.10 - 517.95) ms513.60 ± (512.24 - 514.97) ms-0.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.63 ± (51.61 - 51.66) MB51.59 ± (51.56 - 51.62) MB-0.1%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.2%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.98 ± (19.92 - 20.04) ms20.07 ± (20.00 - 20.14) ms+0.4%✅⬆️
process.time_to_main_ms75.31 ± (75.03 - 75.59) ms76.13 ± (75.73 - 76.52) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.69 ± (7.68 - 7.69) MB7.64 ± (7.63 - 7.64) MB-0.6%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms20.01 ± (19.94 - 20.08) ms20.17 ± (20.10 - 20.25) ms+0.8%✅⬆️
process.time_to_main_ms76.33 ± (76.04 - 76.63) ms78.27 ± (77.83 - 78.70) ms+2.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.74 ± (7.73 - 7.74) MB7.69 ± (7.68 - 7.70) MB-0.6%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms193.28 ± (192.36 - 194.20) ms192.01 ± (191.05 - 192.98) ms-0.7%
process.time_to_main_ms494.33 ± (493.35 - 495.31) ms490.97 ± (489.69 - 492.26) ms-0.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed38.88 ± (38.84 - 38.92) MB38.93 ± (38.89 - 38.97) MB+0.1%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.0%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration191.59 ± (191.42 - 192.21) ms192.18 ± (192.17 - 192.97) ms+0.3%✅⬆️
.NET Framework 4.8 - Bailout
duration195.01 ± (194.89 - 195.35) ms196.12 ± (196.07 - 196.68) ms+0.6%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1165.85 ± (1170.07 - 1179.54) ms1168.55 ± (1169.59 - 1178.09) ms+0.2%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms189.28 ± (188.77 - 189.79) ms187.89 ± (187.61 - 188.17) ms-0.7%
process.time_to_main_ms81.20 ± (80.91 - 81.48) ms80.66 ± (80.47 - 80.85) ms-0.7%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.08 - 16.13) MB16.07 ± (16.05 - 16.10) MB-0.2%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-1.1%
.NET Core 3.1 - Bailout
process.internal_duration_ms188.27 ± (187.95 - 188.60) ms187.40 ± (187.07 - 187.73) ms-0.5%
process.time_to_main_ms82.04 ± (81.89 - 82.19) ms81.98 ± (81.82 - 82.14) ms-0.1%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.18 ± (16.15 - 16.21) MB16.17 ± (16.13 - 16.20) MB-0.1%
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)-0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms395.22 ± (392.70 - 397.73) ms398.72 ± (396.04 - 401.39) ms+0.9%✅⬆️
process.time_to_main_ms517.06 ± (516.38 - 517.74) ms523.26 ± (522.47 - 524.05) ms+1.2%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed62.65 ± (62.50 - 62.81) MB63.14 ± (63.00 - 63.27) MB+0.8%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms199.16 ± (198.70 - 199.61) ms193.82 ± (193.35 - 194.30) ms-2.7%
process.time_to_main_ms72.35 ± (72.15 - 72.55) ms70.65 ± (70.45 - 70.85) ms-2.4%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.24 ± (16.21 - 16.26) MB16.24 ± (16.13 - 16.36) MB+0.0%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-1.1%
.NET 6 - Bailout
process.internal_duration_ms196.07 ± (195.60 - 196.55) ms192.27 ± (191.83 - 192.70) ms-1.9%
process.time_to_main_ms72.41 ± (72.21 - 72.61) ms70.88 ± (70.75 - 71.02) ms-2.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.33 ± (16.30 - 16.35) MB16.35 ± (16.28 - 16.42) MB+0.1%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-1.5%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms417.74 ± (414.56 - 420.93) ms415.52 ± (412.21 - 418.83) ms-0.5%
process.time_to_main_ms490.03 ± (489.34 - 490.73) ms485.37 ± (484.70 - 486.03) ms-1.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.31 ± (62.18 - 62.45) MB62.07 ± (61.93 - 62.20) MB-0.4%
runtime.dotnet.threads.count29 ± (29 - 30)29 ± (29 - 29)-0.3%
.NET 8 - Baseline
process.internal_duration_ms190.88 ± (190.49 - 191.27) ms192.73 ± (192.29 - 193.17) ms+1.0%✅⬆️
process.time_to_main_ms69.32 ± (69.11 - 69.53) ms69.93 ± (69.75 - 70.11) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.73 ± (11.70 - 11.76) MB11.72 ± (11.70 - 11.74) MB-0.1%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.4%
.NET 8 - Bailout
process.internal_duration_ms188.72 ± (188.49 - 188.95) ms191.88 ± (191.37 - 192.40) ms+1.7%✅⬆️
process.time_to_main_ms70.01 ± (69.91 - 70.10) ms70.92 ± (70.74 - 71.09) ms+1.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.70 ± (11.62 - 11.78) MB11.78 ± (11.75 - 11.81) MB+0.7%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+1.2%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms363.28 ± (361.74 - 364.82) ms364.67 ± (363.03 - 366.32) ms+0.4%✅⬆️
process.time_to_main_ms465.13 ± (464.52 - 465.74) ms462.09 ± (461.27 - 462.92) ms-0.7%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.27 ± (50.23 - 50.31) MB50.30 ± (50.26 - 50.35) MB+0.1%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.3%✅⬆️
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 (7843) - mean (76ms)  : 69, 82
    master - mean (75ms)  : 71, 79

    section Bailout
    This PR (7843) - mean (80ms)  : 74, 86
    master - mean (79ms)  : 74, 84

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (1,130ms)  : 1053, 1207
    master - mean (1,133ms)  : 1053, 1212

Loading
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 (7843) - mean (118ms)  : 111, 124
    master - mean (118ms)  : 112, 125

    section Bailout
    This PR (7843) - mean (119ms)  : 110, 128
    master - mean (121ms)  : 113, 128

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (809ms)  : 768, 851
    master - mean (814ms)  : 781, 848

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7843) - mean (107ms)  : 97, 116
    master - mean (108ms)  : 102, 114

    section Bailout
    This PR (7843) - mean (108ms)  : 101, 115
    master - mean (106ms)  : 100, 112

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (753ms)  : 711, 795
    master - mean (757ms)  : 721, 792

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7843) - mean (105ms)  : 98, 112
    master - mean (104ms)  : 99, 109

    section Bailout
    This PR (7843) - mean (107ms)  : 99, 115
    master - mean (105ms)  : 99, 111

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (716ms)  : 677, 755
    master - mean (725ms)  : 694, 757

Loading
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 (7843) - mean (193ms)  : 188, 197
    master - mean (192ms)  : 188, 196

    section Bailout
    This PR (7843) - mean (196ms)  : 193, 200
    master - mean (195ms)  : 193, 197

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (1,174ms)  : 1114, 1234
    master - mean (1,175ms)  : 1102, 1248

Loading
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 (7843) - mean (277ms)  : 272, 281
    master - mean (279ms)  : 271, 287

    section Bailout
    This PR (7843) - mean (278ms)  : 274, 282
    master - mean (278ms)  : 274, 283

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (957ms)  : 914, 1001
    master - mean (944ms)  : 898, 991

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7843) - mean (273ms)  : 267, 278
    master - mean (280ms)  : 272, 289

    section Bailout
    This PR (7843) - mean (271ms)  : 266, 277
    master - mean (277ms)  : 269, 284

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (931ms)  : 875, 986
    master - mean (937ms)  : 888, 987

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7843) - mean (272ms)  : 263, 282
    master - mean (270ms)  : 263, 277

    section Bailout
    This PR (7843) - mean (272ms)  : 265, 280
    master - mean (268ms)  : 265, 271

    section CallTarget+Inlining+NGEN
    This PR (7843) - mean (858ms)  : 842, 874
    master - mean (859ms)  : 840, 878

Loading

@andrewlock
Copy link
Member Author

Tested locally and it works 🎉

@andrewlock andrewlock merged commit d709346 into master Nov 21, 2025
151 checks passed
@andrewlock andrewlock deleted the andrew/add-vs-2026-detection branch November 21, 2025 13:23
@github-actions github-actions bot added this to the vNext-v3 milestone Nov 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:builds project files, build scripts, pipelines, versioning, releases, packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants