Repository navigation
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in Span.Sorting
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 13.69 μs | 18.30 μs | 1.34 | 0.10 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Span.Sorting*'Details
Span.Sorting.QuickSortSpan(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Tests.Perf_Int64
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 11.31 ns | 16.47 ns | 1.46 | 0.02 | False | ||||
| 26.68 ns | 37.01 ns | 1.39 | 0.04 | False | ||||
| 10.37 ns | 14.94 ns | 1.44 | 0.05 | False | ||||
| 11.23 ns | 15.43 ns | 1.37 | 0.04 | False | ||||
| 26.60 ns | 36.91 ns | 1.39 | 0.09 | False | ||||
| 27.61 ns | 30.69 ns | 1.11 | 0.06 | False | ||||
| 27.40 ns | 30.62 ns | 1.12 | 0.05 | False | ||||
| 30.57 ns | 42.02 ns | 1.37 | 0.06 | False | ||||
| 31.91 ns | 37.62 ns | 1.18 | 0.06 | False | ||||
| 10.95 ns | 16.83 ns | 1.54 | 0.08 | False | ||||
| 26.75 ns | 32.32 ns | 1.21 | 0.04 | False | ||||
| 26.96 ns | 31.77 ns | 1.18 | 0.05 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Int64*'Details
System.Tests.Perf_Int64.TryParse(value: "12345")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.ParseSpan(value: "9223372036854775807")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.Parse(value: "12345")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.ParseSpan(value: "12345")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.TryParseSpan(value: "9223372036854775807")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.ParseSpan(value: "-9223372036854775808")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.TryParse(value: "-9223372036854775808")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.Parse(value: "9223372036854775807")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.TryParse(value: "9223372036854775807")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.TryParseSpan(value: "12345")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.Parse(value: "-9223372036854775808")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_Int64.TryParseSpan(value: "-9223372036854775808")
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in ArrayDeAbstraction
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 376.44 ns | 487.18 ns | 1.29 | 0.00 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'ArrayDeAbstraction*'Details
ArrayDeAbstraction.foreach_opaque_array_via_interface
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in PerfLabTests.LowLevelPerf
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 1.59 ms | 1.84 ms | 1.15 | 0.02 | False | ||||
| 155.96 μs | 187.15 μs | 1.20 | 0.12 | False | ||||
| 156.00 μs | 187.15 μs | 1.20 | 0.02 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.LowLevelPerf*'Details
PerfLabTests.LowLevelPerf.EmptyStaticFunction5Arg
ETL Files
Histogram
JIT Disasms
PerfLabTests.LowLevelPerf.GenericClassGenericStaticMethod
ETL Files
Histogram
JIT Disasms
PerfLabTests.LowLevelPerf.StructWithInterfaceInterfaceMethod
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.ContainsFalse<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 24.44 μs | 27.79 μs | 1.14 | 0.14 | False | ||||
| 21.66 μs | 24.82 μs | 1.15 | 0.27 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsFalse<Int32>*'Details
System.Collections.ContainsFalse<Int32>.Span(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.ContainsFalse<Int32>.ImmutableArray(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Memory.Span<Char>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 12.14 ns | 13.43 ns | 1.11 | 0.04 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Memory.Span<Char>*'Details
System.Memory.Span<Char>.StartsWith(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in PerfLabTests.CastingPerf
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 283.70 μs | 313.05 μs | 1.10 | 0.06 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.CastingPerf*'Details
PerfLabTests.CastingPerf.FooObjIsFoo2
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.ContainsFalse<String>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 768.46 μs | 871.82 μs | 1.13 | 0.01 | False | ||||
| 768.20 μs | 870.05 μs | 1.13 | 0.01 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsFalse<String>*'Details
System.Collections.ContainsFalse<String>.Array(Size: 512)
ETL Files
Histogram
JIT Disasms
System.Collections.ContainsFalse<String>.Span(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in IfStatements.IfStatements
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 37.46 μs | 40.60 μs | 1.08 | 0.01 | False | ||||
| 28.14 μs | 34.32 μs | 1.22 | 0.01 | False | ||||
| 43.55 μs | 49.75 μs | 1.14 | 0.01 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'IfStatements.IfStatements*'Details
IfStatements.IfStatements.AndAnd
ETL Files
Histogram
JIT Disasms
IfStatements.IfStatements.Single
ETL Files
Histogram
JIT Disasms
IfStatements.IfStatements.AndAndAnd
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Buffers.Binary.Tests.BinaryReadAndWriteTests
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 879.41 ns | 941.12 ns | 1.07 | 0.03 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Binary.Tests.BinaryReadAndWriteTests*'Details
System.Buffers.Binary.Tests.BinaryReadAndWriteTests.MeasureReverseEndianness
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | Windows 10.0.22621 |
| Queue | TigerWindows |
| Baseline | 3cabc2180c2a1707ba535e5d6911d53d58731dd2 |
| Compare | 9ed11b9729f17813247a8bebd39873c32305fc7e |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Tests.Perf_UInt64
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio |
|---|---|---|---|---|---|---|---|---|
| 12.12 ns | 14.42 ns | 1.19 | 0.04 | False | ||||
| 11.66 ns | 14.99 ns | 1.29 | 0.04 | False | ||||
| 12.15 ns | 14.64 ns | 1.20 | 0.04 | False |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_UInt64*'Details
System.Tests.Perf_UInt64.TryParse(value: "12345")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_UInt64.Parse(value: "12345")
ETL Files
Histogram
JIT Disasms
System.Tests.Perf_UInt64.ParseSpan(value: "12345")
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository






























Activity
performanceautofiler commentedon Jun 17, 2025
Run Information
Regressions in PerfLabTests.CastingPerf2.CastingPerf
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFoo
ETL Files
Histogram
JIT Disasms
PerfLabTests.CastingPerf2.CastingPerf.ObjFooIsObj
ETL Files
Histogram
JIT Disasms
PerfLabTests.CastingPerf2.CastingPerf.FooObjIsFoo
ETL Files
Histogram
JIT Disasms
PerfLabTests.CastingPerf2.CastingPerf.FooObjIsDescendant
ETL Files
Histogram
JIT Disasms
PerfLabTests.CastingPerf2.CastingPerf.IFooFooIsIFoo
ETL Files
Histogram
JIT Disasms
PerfLabTests.CastingPerf2.CastingPerf.FooObjIsNull
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Text.Perf_Ascii
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Text.Perf_Ascii.Equals_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.Equals_Chars(Size: 128)
ETL Files
Histogram
JIT Disasms
System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Bytes(Size: 128)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.MathBenchmarks.Double
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.MathBenchmarks.Double.ScaleB
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Char
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Tests.Perf_Char.Char_ToLowerInvariant(input: "Hello World!")
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Globalization.Tests.StringSearch
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, IgnoreCase, False))
ETL Files
Histogram
JIT Disasms
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, Ordinal, False))
ETL Files
Histogram
JIT Disasms
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in SeekUnroll
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
SeekUnroll.Test(boxedIndex: 27)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.IterateForEach<Int32>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Collections.IterateForEach<Int32>.FrozenDictionary(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in Benchstone.BenchI.IniArray
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
Benchstone.BenchI.IniArray.Test
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.Perf_Frozen<Int16>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Collections.Perf_Frozen<Int16>.Contains_True(Count: 4)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_String
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Tests.Perf_String.IndexerCheckPathLength
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Text.Json.Tests.Utf8JsonReaderCommentsTests
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Allow, SegmentSize: 0, TestCase: LongMultiLine)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Perf_Convert
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Perf_Convert.ToBase64CharArray(binaryDataSize: 1024, formattingOptions: InsertLineBreaks)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Random
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Details
System.Tests.Perf_Random.NextBytes_span
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
DrewScoggins commentedon Jun 17, 2025
Related to #115850
Related Regressions:
Related Improvements:
AndyAyersMS commentedon Jun 17, 2025
@amanasifkhalid FYI
dotnet-policy-service commentedon Jun 17, 2025
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.
amanasifkhalid commentedon Aug 1, 2025
1.12
1.78
1.44
1.37
1.54
1.37
1.40
1.37
1.37
1.37
1.15
1.35
1.34
1.39
1.35
1.35
1.51
1.14
1.44
1.37
1.17
1.46
1.41
1.21
1.27
1.28
1.27
1.27
1.27
1.27
1.27
1.27
1.26
1.37
1.18
1.19
1.25
1.20
1.21
1.29
1.45
1.14
1.16
1.24
1.24
1.24
1.24
1.22
1.23
1.19
1.22
1.22
1.24
1.19
1.21
1.21
1.31
1.12
1.21
1.20
1.20
1.20
1.20
1.20
1.37
1.15
1.08
1.26
1.39
1.17
1.10
1.11
1.18
1.29
1.18
1.18
1.17
1.15
1.16
1.14
1.16
1.07
1.33
1.07
1.07
1.12
1.13
1.21
1.07
1.18
1.11
1.28
1.27
1.27
1.27
1.37
1.12
1.17
1.09
1.22
1.09
1.09
1.16
1.11
1.10
1.10
1.16
1.11
1.10
1.10
1.08
1.09
1.07
1.11
1.09
1.08
1.09
1.06
1.13
1.14
1.11
1.09
1.07
1.06
1.06
2.00
1.34
1.05
1.05
1.50
1.15
1.23
1.15
1.16
1.26
1.08
1.21
1.26
1.08
1.11
1.14
1.42
1.27
1.14
1.21
1.39
1.20
1.87
1.93
1.12
1.08
1.18
1.33
1.17
1.60
1.14
1.19
1.13
1.13
amanasifkhalid commentedon Aug 1, 2025
For many of the regressions, we're now inverting more loops because the flowgraph is in a more compact state after flow opts, and the additional inversions frequently make sense. For example, the hot loop in
System.Collections.IterateForEach(String).List(Size: 512)is now correctly rotated. Previously, it was this:Now, it is this:
However, the change in loop flow from inversion frequently pessimizes loop hoisting, because hoisting's side effect detection is quite conservative. Once we've processed the loop header, we assume every block visited after is preceded by code with side effects, so slight changes in loop flow can disable hoisting of nodes with side effects. Now that we iterate loop blocks in RPO during hoisting, I think we can get rid of this assumption, and allow the current side effect detection logic handle setting the "before side effect" flag.
JIT: Remove side effect detection quirk in loop hoisting (#118463)
amanasifkhalid commentedon Aug 15, 2025
Here is where we currently stand.
1.78
1.87
1.35
1.44
1.54
1.37
1.39
1.40
1.37
1.37
1.37
1.15
1.50
1.15
1.12
1.35
1.34
1.35
1.44
1.37
1.17
1.41
1.21
1.51
1.14
1.46
1.27
1.28
1.28
1.27
1.21
1.29
1.27
1.27
1.27
1.27
1.27
1.27
1.37
1.18
1.19
1.27
1.26
1.27
1.20
1.11
1.18
1.25
1.24
1.24
1.24
1.24
1.23
1.45
1.14
1.16
1.22
1.24
1.19
1.22
1.21
1.22
1.39
1.17
1.10
1.21
1.31
1.12
1.26
1.21
1.20
1.20
1.20
1.20
1.20
1.09
1.19
1.37
1.15
1.08
1.19
1.14
1.15
1.16
1.07
1.07
1.07
1.33
1.29
1.13
1.17
1.18
1.18
1.21
1.07
1.18
1.11
1.16
1.17
1.16
1.11
1.37
1.12
1.09
1.22
1.14
1.10
1.10
1.09
1.11
1.10
1.10
1.08
1.09
1.09
1.08
1.07
1.11
1.06
1.13
1.14
1.11
1.09
1.06
1.06
1.05
1.05
1.37
2.00
1.34
1.12
1.16
1.23
1.15
1.21
1.11
1.14
1.08
1.21
1.26
1.26
1.27
1.08
1.09
1.16
1.14
1.20
1.39
1.93
1.42
1.08
1.18
1.33
1.12
1.07
1.17
1.60
1.13
1.13
amanasifkhalid commentedon Aug 15, 2025
Inverting the loop in
System.Collections.IterateForEach(String).List(Size: 512)means we can no longer hoist loop expressions as aggressively as before, as the changed flow through the loop means these hoists would violate side effect ordering constraints. Detecting whether inversion would affect a loop's hoisting potential would be tricky, and I don't think this problem is widespread enough to consider that approach; when more inversion pessimizes loop hoisting, it's more likely that the existing quirks in hoisting -- such as its reluctance to hoist conditionally-executing code -- inhibits us, rather than its correctness constraints.After this, we have a tail of Intel-only regressions; the
Perf_Int.Parseregressions are probably the same underlying method. As mentioned in #116486, I'd like inversion to have more insight into the clonability of loops in .NET 11, so we can enable BCE/GDV/etc more often. There are plenty of cases where more inversion pessimizes loop hoisting, RBO, etc, but I'm inclined to believe the cases where we invert less are a bigger missed opportunity. Once RC1 snaps, I'll try moving some of the cloning profitability heuristics earlier so we can invert more confidently.AndyAyersMS commentedon May 20, 2026
We stopped running Tiger around Nov 2025 so we don't have up to date data there. Looking at Viper most of the benchmarks are looking pretty good (AI summary, but I double-checked a few).
So going to close this.