Skip to content

[Perf] Regressions from cross-block local assertion prop #95645

Closed

Description

@performanceautofiler

Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Text.Perf_Ascii

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
4.08 ns 5.11 ns 1.25 0.04 False
17.57 ns 23.73 ns 1.35 0.15 False
17.53 ns 24.33 ns 1.39 0.19 True
22.04 ns 23.75 ns 1.08 0.10 False

graph
graph
graph
graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Perf_Ascii*'
Details

Payloads

Baseline
Compare

System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes_Chars(Size: 6)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToUpper_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToLower_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Bytes_Chars(Size: 128)

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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.TryGetValueTrue<Int32, Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
1.04 μs 1.91 μs 1.83 0.06 True
2.24 μs 3.52 μs 1.57 0.30 False
21.25 μs 22.79 μs 1.07 0.04 False

graph
graph
graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.TryGetValueTrue&lt;Int32, Int32&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.TryGetValueTrue<Int32, Int32>.ConcurrentDictionary(Size: 512)

ETL Files

Histogram

JIT Disasms

System.Collections.TryGetValueTrue<Int32, Int32>.IDictionary(Size: 512)

ETL Files

Histogram

JIT Disasms

System.Collections.TryGetValueTrue<Int32, Int32>.SortedDictionary(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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Text.Json.Tests.Perf_Reader

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
32.63 μs 34.33 μs 1.05 0.07 False

graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Perf_Reader*'
Details

Payloads

Baseline
Compare

System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: True, TestCase: Json40KB)

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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Common

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
65.16 ns 70.03 ns 1.07 0.02 False
68.94 ns 76.96 ns 1.12 0.03 False
1.01 μs 1.08 μs 1.08 0.08 False
69.53 ns 76.92 ns 1.11 0.06 False

graph
graph
graph
graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Common*'
Details

Payloads

Baseline
Compare

System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsMatch(Options: IgnoreCase, Compiled)

ETL Files

Histogram

JIT Disasms

System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: IgnoreCase, Compiled)

ETL Files

Histogram

JIT Disasms

System.Text.RegularExpressions.Tests.Perf_Regex_Common.MatchesWord(Options: None)

ETL Files

Histogram

JIT Disasms

System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: Compiled)

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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.CreateAddAndClear<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
1.20 μs 1.51 μs 1.25 0.38 False

graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CreateAddAndClear&lt;String&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.CreateAddAndClear<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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.IndexerSetReverse<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
173.16 ns 228.86 ns 1.32 0.00 True
173.37 ns 229.20 ns 1.32 0.00 True
507.30 ns 566.83 ns 1.12 0.13 False

graph
graph
graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IndexerSetReverse&lt;Int32&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.IndexerSetReverse<Int32>.Span(Size: 512)

ETL Files

Histogram

JIT Disasms

System.Collections.IndexerSetReverse<Int32>.Array(Size: 512)

ETL Files

Histogram

JIT Disasms

System.Collections.IndexerSetReverse<Int32>.IList(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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.Perf_Frozen<NotKnownComparable>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
1.45 μs 1.95 μs 1.35 0.07 False
210.64 ns 243.33 ns 1.16 0.12 False

graph
graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Perf_Frozen&lt;NotKnownComparable&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.Perf_Frozen<NotKnownComparable>.Contains_True(Count: 512)

ETL Files

Histogram

JIT Disasms

System.Collections.Perf_Frozen<NotKnownComparable>.Contains_True(Count: 64)

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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.Sort<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
16.49 μs 20.15 μs 1.22 0.13 False
16.43 μs 20.21 μs 1.23 0.11 False

graph
graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Sort&lt;Int32&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.Sort<Int32>.LinqOrderByExtension(Size: 512)

ETL Files

Histogram

JIT Disasms

System.Collections.Sort<Int32>.LinqQuery(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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Buffers.Tests.ReadOnlySequenceTests<Char>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
4.48 ns 5.76 ns 1.28 0.47 False

graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Tests.ReadOnlySequenceTests&lt;Char&gt;*'
Details

Payloads

Baseline
Compare

System.Buffers.Tests.ReadOnlySequenceTests<Char>.IterateForEachArray

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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.IndexerSetReverse<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
173.61 ns 228.81 ns 1.32 0.00 True

graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IndexerSetReverse&lt;String&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.IndexerSetReverse<String>.Array(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 ubuntu 22.04
Queue TigerUbuntu
Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
Compare 18c746aa09c5f50f615636500809fc32c1216efd
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.IterateForEach<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
147.73 ns 192.26 ns 1.30 0.00 True

graph
Test Report

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IterateForEach&lt;String&gt;*'
Details

Payloads

Baseline
Compare

System.Collections.IterateForEach<String>.ImmutableArray(Size: 512)

ETL Files

Histogram

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Activity

  1. performanceautofiler commented on Dec 5, 2023

    @performanceautofiler
    Author

    Run Information

    Name Value
    Architecture x64
    OS ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Perf_Convert

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    1.19 μs 1.48 μs 1.24 0.01 True
    1.07 μs 1.29 μs 1.21 0.00 True

    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Perf_Convert*'
    Details

    Payloads

    Baseline
    Compare

    System.Perf_Convert.ToBase64String(formattingOptions: InsertLineBreaks)

    ETL Files

    Histogram

    JIT Disasms

    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

    Name Value
    Architecture x64
    OS ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Globalization.Tests.StringSearch

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    159.16 ns 207.26 ns 1.30 0.09 False
    159.28 ns 207.10 ns 1.30 0.12 False
    158.95 ns 207.00 ns 1.30 0.12 False
    7.65 ns 8.82 ns 1.15 0.11 False

    graph
    graph
    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Globalization.Tests.StringSearch*'
    Details

    Payloads

    Baseline
    Compare

    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreNonSpace, False))

    ETL Files

    Histogram

    JIT Disasms

    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, None, False))

    ETL Files

    Histogram

    JIT Disasms

    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, None, False))

    ETL Files

    Histogram

    JIT Disasms

    System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreNonSpace, False))

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Collections.ContainsTrueComparer<Int32>

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    2.18 μs 2.52 μs 1.16 0.27 False
    12.96 μs 14.10 μs 1.09 0.06 False

    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrueComparer&lt;Int32&gt;*'
    Details

    Payloads

    Baseline
    Compare

    System.Collections.ContainsTrueComparer<Int32>.FrozenSet(Size: 512)

    ETL Files

    Histogram

    JIT Disasms

    System.Collections.ContainsTrueComparer<Int32>.ImmutableHashSet(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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    1.28 ms 1.37 ms 1.07 0.01 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas*'
    Details

    Payloads

    Baseline
    Compare

    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "[\w]+://[^/\\s?#]+[^\\s?#]+(?:\?[^\\s#])?(?:#[^\\s])?", Options: Compiled)

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Tests.Perf_Int32

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    5.83 ns 7.03 ns 1.21 0.13 False
    10.32 ns 12.94 ns 1.25 0.37 False

    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Int32*'
    Details

    Payloads

    Baseline
    Compare

    System.Tests.Perf_Int32.TryFormat(value: 2147483647)

    ETL Files

    Histogram

    JIT Disasms

    System.Tests.Perf_Int32.Parse(value: "12345")

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Text.Json.Document.Tests.Perf_EnumerateObject

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    8.62 μs 9.53 μs 1.11 0.15 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Document.Tests.Perf_EnumerateObject*'
    Details

    Payloads

    Baseline
    Compare

    System.Text.Json.Document.Tests.Perf_EnumerateObject.Parse(TestCase: StringProperties)

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Collections.IterateForEach<Int32>

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    118.51 ns 145.15 ns 1.22 0.00 True
    802.35 ns 912.48 ns 1.14 0.02 False

    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.IterateForEach&lt;Int32&gt;*'
    Details

    Payloads

    Baseline
    Compare

    System.Collections.IterateForEach<Int32>.ImmutableArray(Size: 512)

    ETL Files

    Histogram

    JIT Disasms

    System.Collections.IterateForEach<Int32>.IEnumerable(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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Text.Json.Tests.Perf_Basic

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    1.44 ms 1.60 ms 1.11 0.02 False
    1.38 ms 1.56 ms 1.13 0.16 False

    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Perf_Basic*'
    Details

    Payloads

    Baseline
    Compare

    System.Text.Json.Tests.Perf_Basic.WriteBasicUtf8(Formatted: False, SkipValidation: False, DataSize: 100000)

    ETL Files

    Histogram

    JIT Disasms

    System.Text.Json.Tests.Perf_Basic.WriteBasicUtf8(Formatted: False, SkipValidation: True, DataSize: 100000)

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Collections.Sort<IntStruct>

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    15.69 μs 16.81 μs 1.07 0.13 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Sort&lt;IntStruct&gt;*'
    Details

    Payloads

    Baseline
    Compare

    System.Collections.Sort<IntStruct>.LinqQuery(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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Text.Json.Tests.Perf_Get

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    76.60 ns 141.32 ns 1.84 0.00 True

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Tests.Perf_Get*'
    Details

    Payloads

    Baseline
    Compare

    System.Text.Json.Tests.Perf_Get.GetBoolean

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in Benchstone.BenchF.InvMt

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    1.99 ms 2.51 ms 1.26 0.03 True

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchstone.BenchF.InvMt*'
    Details

    Payloads

    Baseline
    Compare

    Benchstone.BenchF.InvMt.Test

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    294.65 ms 336.51 ms 1.14 0.10 False
    3.08 secs 3.42 secs 1.11 0.20 False

    graph
    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig*'
    Details

    Payloads

    Baseline
    Compare

    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: ".{2,4}(Tom|Sawyer|Huckleberry|Finn)", Options: Compiled)

    ETL Files

    Histogram

    JIT Disasms

    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: ".{0,2}(Tom|Sawyer|Huckleberry|Finn)", Options: None)

    ETL Files

    Histogram

    JIT Disasms

    Docs

    Profiling workflow for dotnet/runtime repository
    Benchmarking workflow for dotnet/runtime repository

  2. performanceautofiler commented on Dec 5, 2023

    @performanceautofiler
    Author

    Run Information

    Name Value
    Architecture x64
    OS ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Collections.ContainsKeyTrue<String, String>

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    8.35 μs 8.85 μs 1.06 0.03 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsKeyTrue&lt;String, String&gt;*'
    Details

    Payloads

    Baseline
    Compare

    System.Collections.ContainsKeyTrue<String, String>.ConcurrentDictionary(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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in Microsoft.Extensions.Logging.LoggingOverhead

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    36.21 ns 38.63 ns 1.07 0.08 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Microsoft.Extensions.Logging.LoggingOverhead*'
    Details

    Payloads

    Baseline
    Compare

    Microsoft.Extensions.Logging.LoggingOverhead.TwoArguments_FilteredByLevel

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.Collections.Sort<BigStruct>

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    5.05 μs 5.67 μs 1.12 0.10 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Sort&lt;BigStruct&gt;*'
    Details

    Payloads

    Baseline
    Compare

    System.Collections.Sort<BigStruct>.List(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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in System.ComponentModel.Tests.Perf_TypeDescriptorTests

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    106.17 ns 114.39 ns 1.08 0.10 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.ComponentModel.Tests.Perf_TypeDescriptorTests*'
    Details

    Payloads

    Baseline
    Compare

    System.ComponentModel.Tests.Perf_TypeDescriptorTests.GetConverter(typeToConvert: typeof(System.Enum))

    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 ubuntu 22.04
    Queue TigerUbuntu
    Baseline 52e65a5fab8fc2a60a5eb4d23e00a4a4544232f7
    Compare 18c746aa09c5f50f615636500809fc32c1216efd
    Diff Diff
    Configs CompilationMode:tiered, RunKind:micro

    Regressions in Microsoft.Extensions.DependencyInjection.GetService

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
    30.47 ns 33.64 ns 1.10 0.13 False

    graph
    Test Report

    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
    python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Microsoft.Extensions.DependencyInjection.GetService*'
    Details

    Payloads

    Baseline
    Compare

    Microsoft.Extensions.DependencyInjection.GetService.ServiceScope

    ETL Files

    Histogram

    JIT Disasms

    Docs

    Profiling workflow for dotnet/runtime repository
    Benchmarking workflow for dotnet/runtime repository

  3. changed the title [-][Perf] Linux/x64: 49 Regressions on 11/29/2023 12:40:47 AM[/-] [+][Perf] Regressions from cross-block local assertion prop[/+] on Dec 5, 2023
  4. ghost added
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Dec 5, 2023
  5. added
    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
    and removed
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    os-linuxLinux OS (any supported distro)
    on Dec 5, 2023
  6. 2 remaining items

  7. self-assigned this
    on Dec 8, 2023
  8. added this to the 9.0.0 milestone on Dec 8, 2023
  9. ghost removed
    untriagedNew issue has not been triaged by the area owner
    on Dec 8, 2023
  10. AndyAyersMS commented on Dec 12, 2023

    @AndyAyersMS
    Member

    Collated regression report as of 12-12-23. 149 benchmarks regressed.

    Notes Recent Score Orig Score arm64
    Windows
    arm64
    Ubuntu
    intel x64
    Ubuntu
    intel x64
    Windows
    amd x64
    Windows
    Benchmark
    1.84 1.84 1.84
    1.84
    System.Text.Json.Tests.Perf_Get.GetBoolean
    1.82 1.83 1.82
    1.83
    System.Collections.TryGetValueTrue(Int32, Int32).ConcurrentDictionary(Size: 512)
    1.62 1.57 1.62
    1.57
    System.Collections.TryGetValueTrue(Int32, Int32).IDictionary(Size: 512)
    1.53 1.44 1.79
    1.79
    1.31
    1.16
    LinqBenchmarks.Count00ForX
    1.51 1.52 1.69
    1.70
    2.09
    2.09
    1.22
    1.22
    1.22
    1.22
    System.Collections.IterateForEach(Int32).ImmutableArray(Size: 512)
    1.47 1.47 1.47
    1.47
    Microsoft.Extensions.Primitives.StringSegmentBenchmark.IndexOf
    1.46 1.46 1.46
    1.46
    System.Linq.Tests.Perf_Enumerable.ElementAt(input: IList)
    1.46 1.43 1.46
    1.43
    System.Tests.Perf_Int32.TryFormat(value: 4)
    1.41 1.37 1.41
    1.37
    System.Linq.Tests.Perf_Enumerable.SelectToList(input: Array)
    1.39 1.26 1.39
    1.26
    Benchstone.BenchF.InvMt.Test
    1.38 1.25 1.38
    1.25
    System.Tests.Perf_Int32.Parse(value: "12345")
    1.37 1.37 1.37
    1.37
    System.Numerics.Tests.Perf_BigInteger.Equals(arguments: 259 bytes, Same)
    1.35 1.36 1.35
    1.36
    System.Linq.Tests.Perf_Enumerable.SelectToArray(input: List)
    1.35 1.35 1.35
    1.35
    System.Numerics.Tests.Perf_BigInteger.Equals(arguments: 259 bytes, DiffLastByte)
    1.33 1.33 1.33
    1.33
    BenchmarksGame.ReverseComplement_1.RunBench
    1.33 1.31 1.33
    1.31
    System.Numerics.Tests.Perf_VectorOf(SByte).GetHashCodeBenchmark
    1.32 1.32 1.32
    1.32
    1.32
    1.32
    System.Collections.IndexerSetReverse(Int32).Span(Size: 512)
    1.32 1.32 1.32
    1.32
    1.32
    1.32
    System.Collections.IndexerSetReverse(Int32).Array(Size: 512)
    1.30 1.30 1.30
    1.30
    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreNonSpace, False))
    1.30 1.25 1.30
    1.25
    System.Memory.Span(Byte).Reverse(Size: 512)
    1.30 1.30 1.30
    1.30
    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, None, False))
    1.30 1.32 1.30
    1.32
    System.Linq.Tests.Perf_Enumerable.WhereLast_LastElementMatches(input: IEnumerable)
    1.29 1.30 1.29
    1.30
    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, None, False))
    1.28 1.27 1.20
    1.19
    1.32
    1.32
    1.32
    1.31
    System.Collections.IndexerSetReverse(String).Array(Size: 512)
    1.27 1.28 1.27
    1.28
    System.Buffers.Tests.ReadOnlySequenceTests(Char).IterateForEachArray
    1.27 1.35 1.27
    1.35
    System.Text.Perf_Ascii.ToUpper_Chars(Size: 128)
    1.27 1.25 1.27
    1.25
    System.Collections.CtorFromCollection(Int32).FrozenDictionaryOptimized(Size: 512)
    1.27 1.27 1.27
    1.27
    System.Memory.Span(Int32).IndexOfAnyFiveValues(Size: 33)
    1.27 1.25 1.27
    1.25
    System.Collections.CreateAddAndClear(String).Span(Size: 512)
    1.27 1.27 1.41
    1.41
    1.40
    1.40
    1.21
    1.21
    1.08
    1.08
    System.Perf_Convert.ToBase64CharArray(binaryDataSize: 1024, formattingOptions: InsertLineBreaks)
    1.26 1.26 1.26
    1.26
    System.Numerics.Tests.Perf_BigInteger.Equals(arguments: 259 bytes, DiffMiddleByte)
    1.26 1.26 1.26
    1.26
    System.Numerics.Tests.Perf_VectorOf(Int16).GetHashCodeBenchmark
    1.26 1.39 1.26
    1.39
    System.Text.Perf_Ascii.ToLower_Chars(Size: 128)
    1.25 1.25 1.37
    1.37
    1.36
    1.35
    1.24
    1.24
    1.07
    1.07
    System.Perf_Convert.ToBase64String(formattingOptions: InsertLineBreaks)
    1.25 1.25 1.22
    1.24
    1.23
    1.22
    1.30
    1.30
    System.Collections.IterateForEach(String).ImmutableArray(Size: 512)
    1.24 1.23 1.24
    1.23
    System.Perf_Convert.ToBase64CharArray(binaryDataSize: 1024, formattingOptions: None)
    1.23 1.23 1.23
    1.23
    System.Text.Json.Tests.Perf_Strings.WriteStringsUtf8(Formatted: True, SkipValidation: False, Escaped: OneEscaped)
    1.23 1.25 1.23
    1.25
    System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes_Chars(Size: 6)
    1.23 1.21 1.23
    1.21
    System.Numerics.Tests.Perf_VectorOf(Int32).GetHashCodeBenchmark
    1.21 1.19 1.21
    1.19
    System.Numerics.Tests.Perf_VectorOf(UInt32).GetHashCodeBenchmark
    1.21 1.18 1.21
    1.18
    System.Numerics.Tests.Perf_VectorOf(UInt16).GetHashCodeBenchmark
    1.21 1.20 1.21
    1.20
    System.Linq.Tests.Perf_Enumerable.WhereSingle_LastElementMatches(input: List)
    1.21 1.18 1.21
    1.18
    System.Collections.IterateForEach(String).Array(Size: 512)
    1.21 1.20 1.21
    1.20
    System.Collections.IterateFor(Int32).Array(Size: 512)
    1.20 1.21 1.20
    1.21
    System.Text.Json.Tests.Perf_Strings.WriteStringsUtf8(Formatted: True, SkipValidation: True, Escaped: OneEscaped)
    1.20 1.21 1.20
    1.21
    System.Tests.Perf_Int32.TryFormat(value: 2147483647)
    1.20 1.16 1.20
    1.16
    System.Collections.Sort(IntStruct).Array_ComparerClass(Size: 512)
    1.20 1.20 1.20
    1.20
    PerfLabTests.LowLevelPerf.GenericGenericMethod
    1.20 1.20 1.20
    1.20
    PerfLabTests.LowLevelPerf.ClassVirtualMethod
    1.20 1.21 1.20
    1.21
    System.Collections.IterateFor(Int32).ImmutableArray(Size: 512)
    1.20 1.19 1.20
    1.19
    Benchstone.BenchF.NewtR.Test
    1.18 1.18 1.18
    1.18
    System.Collections.IterateForEach(Int32).Array(Size: 512)
    1.18 1.18 1.18
    1.18
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Email_IsMatch(Options: IgnoreCase, Compiled)
    1.17 1.17 1.17
    1.17
    System.Collections.IndexerSetReverse(String).IList(Size: 512)
    1.17 1.17 1.17
    1.17
    System.Memory.Span(Int32).IndexOfAnyFiveValues(Size: 512)
    1.16 1.16 1.16
    1.16
    1.16
    1.16
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "\p{Sm}", Options: None)
    1.16 1.22 1.16
    1.22
    System.Collections.Sort(Int32).LinqOrderByExtension(Size: 512)
    1.16 1.16 1.16
    1.16
    System.Collections.ContainsTrueComparer(Int32).FrozenSet(Size: 512)
    1.15 1.14 1.15
    1.14
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: ".{2,4}(Tom
    1.15 1.15 1.15
    1.15
    System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreNonSpace, False))
    1.15 1.15 1.15
    1.15
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "\p{Sm}", Options: NonBacktracking)
    1.15 1.13 1.15
    1.13
    System.Text.Json.Tests.Perf_Basic.WriteBasicUtf8(Formatted: False, SkipValidation: True, DataSize: 100000)
    1.15 1.15 1.15
    1.15
    Benchstone.MDBenchI.MDNDhrystone.Test
    1.15 1.15 1.15
    1.15
    System.Linq.Tests.Perf_Enumerable.WhereFirst_LastElementMatches(input: IEnumerable)
    1.14 1.10 1.14
    1.10
    Microsoft.Extensions.DependencyInjection.GetService.ServiceScope
    1.14 1.24 1.14
    1.24
    System.Collections.Sort(IntStruct).Array_Comparison(Size: 512)
    1.14 1.13 1.14
    1.13
    System.Collections.TryGetValueFalse(Int32, Int32).ImmutableSortedDictionary(Size: 512)
    1.14 1.14 1.14
    1.14
    System.Collections.IterateForEach(String).ConcurrentStack(Size: 512)
    1.14 1.14 1.14
    1.14
    System.Linq.Tests.Perf_Enumerable.WhereSingleOrDefault_LastElementMatches(input: Array)
    1.13 1.13 1.13
    1.13
    System.Memory.Span(Int32).IndexOfAnyFourValues(Size: 512)
    1.13 1.13 1.13
    1.13
    System.Numerics.Tests.Perf_BigInteger.ToStringD(numberString: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
    1.13 1.13 1.13
    1.13
    System.Tests.Perf_Int128.ToString(value: 12345)
    1.13 1.12 1.13
    1.12
    System.Collections.Perf_Frozen(ReferenceType).TryGetValue_True(Count: 512)
    1.12 1.12 1.12
    1.12
    System.Collections.IndexerSetReverse(Int32).IList(Size: 512)
    1.12 1.11 1.12
    1.11
    System.Text.Json.Tests.Perf_Basic.WriteBasicUtf8(Formatted: False, SkipValidation: False, DataSize: 100000)
    1.12 1.12 1.12
    1.12
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: IgnoreCase, Compiled)
    1.12 1.35 1.12
    1.35
    System.Collections.Perf_Frozen(NotKnownComparable).Contains_True(Count: 512)
    1.12 1.12 1.06
    1.08
    1.17
    1.17
    System.Linq.Tests.Perf_Enumerable.WhereSelect(input: IEnumerable)
    1.11 1.13 1.08
    1.12
    1.15
    1.15
    System.Collections.Perf_Frozen(Int16).ToFrozenDictionary(Count: 512)
    1.11 1.11 1.11
    1.11
    1.12
    1.11
    System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_FirstElementMatches(input: Array)
    1.11 1.14 1.09
    1.14
    1.13
    1.15
    System.Collections.Tests.Perf_PriorityQueue(Guid, Guid).HeapSort(Size: 10)
    1.11 1.12 1.11
    1.12
    System.Linq.Tests.Perf_Enumerable.OrderByDescending(input: IEnumerable)
    1.10 1.08 1.10
    1.08
    LinqBenchmarks.Where01LinqQueryX
    1.10 1.14 1.10
    1.14
    System.Collections.CtorFromCollection(String).FrozenSet(Size: 512)
    1.10 1.12 1.10
    1.15
    1.10
    1.09
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenDictionary(Count: 512)
    1.10 1.10 1.10
    1.10
    System.Linq.Tests.Perf_Enumerable.Where(input: IEnumerable)
    1.10 1.11 1.08
    1.09
    1.13
    1.11
    1.08
    1.14
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenSet(Count: 512)
    1.10 1.08 1.10
    1.08
    System.Linq.Tests.Perf_Enumerable.WhereFirst_LastElementMatches(input: Array)
    1.10 1.09 1.08
    1.09
    1.12
    1.10
    1.09
    1.09
    System.Collections.Perf_Frozen(Int16).ToFrozenSet(Count: 512)
    1.09 1.11 1.09
    1.11
    PerfLabTests.LowLevelPerf.InterfaceInterfaceMethodLongHierarchy
    1.09 1.12 1.09
    1.12
    System.Collections.Sort(BigStruct).List(Size: 512)
    1.09 1.09 1.09
    1.09
    System.Linq.Tests.Perf_Enumerable.WhereLast_LastElementMatches(input: List)
    1.09 1.05 1.09
    1.05
    Benchstone.BenchI.CSieve.Test
    1.09 1.10 1.09
    1.10
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: ".*", Options: Compiled)
    1.09 1.09 1.10
    1.09
    1.08
    1.09
    System.Collections.Perf_Frozen(Int16).ToFrozenDictionary(Count: 64)
    1.09 1.09 1.09
    1.09
    System.Collections.Sort(IntStruct).List(Size: 512)
    1.09 1.09 1.09
    1.09
    Microsoft.Extensions.Logging.ScopesOverheadBenchmark.FilteredByLevel_InsideScope(HasISupportLoggingScopeLogger: True, CaptureScopes: True)
    1.09 1.08 1.09
    1.08
    1.09
    1.09
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "\p{Lu}", Options: None)
    1.09 1.08 1.09
    1.08
    System.Linq.Tests.Perf_Enumerable.WhereSingleOrDefault_LastElementMatches(input: List)
    1.09 1.08 1.09
    1.08
    System.Collections.TryGetValueFalse(Int32, Int32).ImmutableDictionary(Size: 512)
    1.08 1.07 1.08
    1.07
    System.Collections.Sort(IntStruct).LinqQuery(Size: 512)
    1.08 1.08 1.08
    1.08
    System.Linq.Tests.Perf_Enumerable.Skip_One(input: IEnumerable)
    1.08 1.08 1.08
    1.08
    System.Tests.Perf_Int128.ToString(value: 170141183460469231731687303715884105727)
    1.08 1.09 1.08
    1.09
    System.Tests.Perf_Random.ctor_seeded
    1.08 1.08 1.08
    1.08
    LinqBenchmarks.Where01LinqMethodX
    1.08 1.08 1.08
    1.08
    1.08
    1.09
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "\p{Lu}", Options: Compiled)
    1.08 1.08 1.08
    1.08
    System.Tests.Perf_Enum.InterpolateIntoStringBuilder_Flags(value: Red)
    1.07 1.09 1.07
    1.09
    System.Collections.ContainsTrueComparer(Int32).ImmutableHashSet(Size: 512)
    1.07 1.08 1.07
    1.08
    System.Linq.Tests.Perf_Enumerable.ToDictionary(input: List)
    1.07 1.07 1.07
    1.07
    1.08
    1.07
    1.07
    1.07
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenDictionary(Count: 64)
    1.07 1.07 1.07
    1.07
    System.Tests.Perf_Double.IsNaN(value: NaN)
    1.07 1.07 1.07
    1.07
    System.Tests.Perf_Double.IsNaN(value: 0)
    1.07 1.07 1.07
    1.07
    System.Tests.Perf_Single.IsNaN(value: NaN)
    1.07 1.07 1.07
    1.07
    Benchstone.BenchI.BubbleSort2.Test
    1.07 1.07 1.07
    1.07
    System.Tests.Perf_Single.IsNaN(value: 0)
    1.07 1.05 1.07
    1.05
    System.Memory.Span(Int32).SequenceEqual(Size: 512)
    1.07 1.07 1.07
    1.07
    System.Collections.TryGetValueTrue(Int32, Int32).SortedDictionary(Size: 512)
    1.07 1.08 1.07
    1.08
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.MatchesWord(Options: None)
    1.07 1.07 1.07
    1.08
    1.07
    1.07
    System.Collections.Perf_Frozen(Int16).ToFrozenSet(Count: 64)
    1.07 1.11 1.07
    1.11
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: Compiled)
    1.07 1.07 1.07
    1.07
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "([A-Za-z]awyer
    1.07 1.06 1.07
    1.06
    System.Collections.Tests.Perf_PriorityQueue(Guid, Guid).HeapSort(Size: 1000)
    1.06 1.11 1.06
    1.11
    System.Reflection.Activator(EmptyClass).CreateInstanceType
    1.06 1.06 1.06
    1.06
    System.Numerics.Tests.Perf_BitOperations.LeadingZeroCount_ulong
    1.06 1.06 1.06
    1.06
    System.Text.Json.Document.Tests.Perf_EnumerateArray.Parse(TestCase: ArrayOfStrings)
    1.06 1.23 1.06
    1.23
    System.Collections.Sort(Int32).LinqQuery(Size: 512)
    1.06 1.07 1.06
    1.07
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "[\w]+://[^/\\s?#]+[^\\s?#]+(?:\?[^\\s#])?(?:#[^\\s])?", Options: Compiled)
    1.06 1.06 1.06
    1.06
    System.Text.Perf_Utf8Encoding.GetByteCount(Input: EnglishAllAscii)
    1.06 1.06 1.06
    1.06
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "(?:(?:25[0-5]
    1.06 1.06 1.06
    1.06
    System.Collections.IndexerSet(String).List(Size: 512)
    1.06 1.06 1.06
    1.07
    1.08
    1.05
    1.05
    1.05
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenSet(Count: 64)
    1.06 1.06 1.06
    1.06
    System.Memory.Span(Int32).IndexOfAnyFourValues(Size: 33)
    1.06 1.11 1.06
    1.11
    System.Text.Json.Document.Tests.Perf_EnumerateObject.Parse(TestCase: StringProperties)
    1.06 1.06 1.06
    1.06
    1.06
    1.06
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "the", Options: Compiled)
    1.06 1.06 1.06
    1.06
    System.Linq.Tests.Perf_Enumerable.SequenceEqual(input1: IEnumerable, input2: IEnumerable)
    1.06 1.07 1.06
    1.07
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsMatch(Options: IgnoreCase, Compiled)
    1.06 1.06 1.06
    1.06
    LinqBenchmarks.Where00LinqMethodX
    1.06 1.07 1.06
    1.07
    Microsoft.Extensions.Logging.LoggingOverhead.TwoArguments_FilteredByLevel
    1.06 1.11 1.06
    1.11
    System.Collections.IndexerSetReverse(String).List(Size: 512)
    1.06 1.07 1.06
    1.07
    System.Numerics.Tests.Perf_BitOperations.LeadingZeroCount_uint
    1.05 1.05 1.05
    1.05
    System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: True, TestCase: Json40KB)
    1.05 1.06 1.05
    1.06
    System.Collections.ContainsKeyTrue(String, String).ConcurrentDictionary(Size: 512)
    1.05 1.16 0.95
    1.16
    1.15
    1.16
    System.Collections.Perf_Frozen(NotKnownComparable).Contains_True(Count: 64)
    1.04 1.11 1.04
    1.11
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: ".{0,2}(Tom
    1.03 1.08 1.03
    1.08
    System.ComponentModel.Tests.Perf_TypeDescriptorTests.GetConverter(typeToConvert: typeof(System.Enum))
    1.03 1.42 1.03
    1.42
    System.Buffers.Text.Tests.Utf8ParserTests.TryParseUInt64Hex(value: 0)
    1.02 1.16 1.02
    1.16
    System.Linq.Tests.Perf_Enumerable.Count(input: IEnumerable)
    1.02 1.08 1.02
    1.08
    System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Bytes_Chars(Size: 128)
    0.82 1.43 0.82
    1.43
    System.Memory.Span(Byte).Fill(Size: 512)
    0.79 1.14 0.79
    1.14
    System.Collections.IterateForEach(Int32).IEnumerable(Size: 512)
  11. added
    Priority:2Work that is important, but not critical for the release
    on May 8, 2024
  12. AndyAyersMS commented on Jul 2, 2024

    @AndyAyersMS
    Member

    Many of these are now improved

    newplot - 2024-07-02T084319 228
    newplot - 2024-07-02T084314 261
    newplot - 2024-07-02T084302 378
    newplot - 2024-07-02T084258 645


    But some regressions remain
    newplot - 2024-07-02T084427 796

    Let's see if the collation tool still works, so we can get an updated take on the bulk of these.

  13. AndyAyersMS commented on Jul 2, 2024

    @AndyAyersMS
    Member

    Latest collated data

    Note this may include unrelated regressions/improvements

    Notes Recent Score Orig Score arm64 ubuntu arm64 Windows x64 ubuntu x64 windows amd x64 windows Benchmark
    3.70 1.43 3.70
    1.43
    System.Memory.Span(Byte).Fill(Size: 512)
    1.52 1.52 1.70
    1.70
    2.10
    2.09
    1.22
    1.22
    1.22
    1.22
    System.Collections.IterateForEach(Int32).ImmutableArray(Size: 512)
    1.48 1.43 1.48
    1.43
    System.Tests.Perf_Int32.TryFormat(value: 4)
    1.40 1.31 1.40
    1.31
    System.Numerics.Tests.Perf_VectorOf(SByte).GetHashCodeBenchmark
    1.37 1.37 1.37
    1.37
    System.Numerics.Tests.Perf_BigInteger.Equals(arguments: 259 bytes, Same)
    1.35 1.35 1.35
    1.35
    System.Numerics.Tests.Perf_BigInteger.Equals(arguments: 259 bytes, DiffLastByte)
    1.33 1.33 1.33
    1.33
    BenchmarksGame.ReverseComplement_1.RunBench
    1.33 1.25 1.33
    1.25
    System.Collections.CtorFromCollection(Int32).FrozenDictionaryOptimized(Size: 512)
    1.32 1.32 1.33
    1.32
    1.32
    1.32
    System.Collections.IndexerSetReverse(Int32).Span(Size: 512)
    1.32 1.25 1.25
    1.25
    System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes_Chars(Size: 6)
    1.32 1.32 1.32
    1.32
    1.32
    1.32
    System.Collections.IndexerSetReverse(Int32).Array(Size: 512)
    1.31 1.27 1.31
    1.27
    System.Memory.Span(Int32).IndexOfAnyFiveValues(Size: 33)
    1.28 1.27 1.20
    1.19
    1.32
    1.32
    1.32
    1.31
    System.Collections.IndexerSetReverse(String).Array(Size: 512)
    1.27 1.19 1.27
    1.19
    Benchstone.BenchF.NewtR.Test
    1.26 1.26 1.26
    1.26
    System.Numerics.Tests.Perf_BigInteger.Equals(arguments: 259 bytes, DiffMiddleByte)
    1.26 1.47 1.26
    1.47
    Microsoft.Extensions.Primitives.StringSegmentBenchmark.IndexOf
    1.26 1.35 1.26
    1.35
    System.Collections.Perf_Frozen(NotKnownComparable).Contains_True(Count: 512)
    1.25 1.27 1.40
    1.41
    1.40
    1.40
    1.14
    1.21
    1.08
    1.08
    System.Perf_Convert.ToBase64CharArray(binaryDataSize: 1024, formattingOptions: InsertLineBreaks)
    1.25 1.08 1.25
    1.08
    System.Collections.TryGetValueFalse(Int32, Int32).ImmutableDictionary(Size: 512)
    1.23 1.25 1.23
    1.25
    System.Memory.Span(Byte).Reverse(Size: 512)
    1.23 1.23 1.23
    1.23
    System.Text.Json.Tests.Perf_Strings.WriteStringsUtf8(Formatted: True, SkipValidation: False, Escaped: OneEscaped)
    1.23 1.15 1.23
    1.15
    System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreNonSpace, False))
    1.23 1.21 1.23
    1.21
    System.Tests.Perf_Int32.TryFormat(value: 2147483647)
    1.22 1.14 1.22
    1.14
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: ".{2,4}(Tom
    1.22 1.25 1.37
    1.37
    1.36
    1.35
    1.11
    1.24
    1.07
    1.07
    System.Perf_Convert.ToBase64String(formattingOptions: InsertLineBreaks)
    1.21 1.25 1.25
    1.25
    System.Collections.CreateAddAndClear(String).Span(Size: 512)
    1.21 1.13 1.08
    1.12
    1.36
    1.15
    System.Collections.Perf_Frozen(Int16).ToFrozenDictionary(Count: 512)
    1.20 1.21 1.20
    1.21
    System.Text.Json.Tests.Perf_Strings.WriteStringsUtf8(Formatted: True, SkipValidation: True, Escaped: OneEscaped)
    1.20 1.20 1.20
    1.20
    PerfLabTests.LowLevelPerf.ClassVirtualMethod
    1.18 1.09 1.10
    1.09
    1.26
    1.09
    System.Collections.Perf_Frozen(Int16).ToFrozenDictionary(Count: 64)
    1.18 1.17 1.18
    1.17
    System.Memory.Span(Int32).IndexOfAnyFiveValues(Size: 512)
    1.18 1.18 1.18
    1.18
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Email_IsMatch(Options: IgnoreCase, Compiled)
    1.17 1.83 1.38
    1.83
    System.Collections.TryGetValueTrue(Int32, Int32).ConcurrentDictionary(Size: 512)
    1.16 1.16 1.16
    1.16
    1.17
    1.16
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "\p{Sm}", Options: None)
    1.15 1.12 1.10
    1.15
    1.21
    1.09
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenDictionary(Count: 512)
    1.15 1.30 1.15
    1.30
    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreNonSpace, False))
    1.15 1.15 1.15
    1.15
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "\p{Sm}", Options: NonBacktracking)
    1.15 1.15 1.15
    1.15
    Benchstone.MDBenchI.MDNDhrystone.Test
    1.14 1.14 1.14
    1.14
    System.Collections.IterateForEach(String).ConcurrentStack(Size: 512)
    1.14 1.07 1.08
    1.07
    1.21
    1.07
    1.13
    1.07
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenDictionary(Count: 64)
    1.14 1.11 1.14
    1.11
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: ".{0,2}(Tom
    1.14 1.26 1.14
    1.26
    Benchstone.BenchF.InvMt.Test
    1.13 1.14 1.16
    1.14
    1.10
    1.15
    System.Collections.Tests.Perf_PriorityQueue(Guid, Guid).HeapSort(Size: 10)
    1.13 1.13 1.13
    1.13
    System.Numerics.Tests.Perf_BigInteger.ToStringD(numberString: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
    1.13 1.13 1.13
    1.13
    System.Memory.Span(Int32).IndexOfAnyFourValues(Size: 512)
    1.13 1.13 1.13
    1.13
    System.Tests.Perf_Int128.ToString(value: 12345)
    1.13 1.25 1.13
    1.25
    System.Tests.Perf_Int32.Parse(value: "12345")
    1.12 1.28 1.14
    1.28
    System.Buffers.Tests.ReadOnlySequenceTests(Char).IterateForEachArray
    1.12 1.14 1.12
    1.14
    System.Collections.CtorFromCollection(String).FrozenSet(Size: 512)
    1.12 1.12 1.12
    1.12
    System.Collections.IndexerSetReverse(Int32).IList(Size: 512)
    1.11 1.35 1.09
    1.35
    System.Text.Perf_Ascii.ToUpper_Chars(Size: 128)
    1.11 1.39 1.07
    1.39
    System.Text.Perf_Ascii.ToLower_Chars(Size: 128)
    1.11 1.26 1.11
    1.26
    System.Numerics.Tests.Perf_VectorOf(Int16).GetHashCodeBenchmark
    1.10 1.22 0.93
    1.22
    System.Collections.Sort(Int32).LinqOrderByExtension(Size: 512)
    1.10 1.09 1.07
    1.09
    1.14
    1.10
    1.09
    1.09
    System.Collections.Perf_Frozen(Int16).ToFrozenSet(Count: 512)
    1.09 1.11 1.09
    1.11
    System.Reflection.Activator(EmptyClass).CreateInstanceType
    1.09 1.11 1.09
    1.11
    PerfLabTests.LowLevelPerf.InterfaceInterfaceMethodLongHierarchy
    1.09 1.07 1.08
    1.08
    1.11
    1.07
    System.Collections.Perf_Frozen(Int16).ToFrozenSet(Count: 64)
    1.09 1.11 1.09
    1.11
    System.Collections.IndexerSetReverse(String).List(Size: 512)
    1.09 1.09 1.09
    1.09
    System.Tests.Perf_Random.ctor_seeded
    1.09 1.08 1.09
    1.08
    1.09
    1.09
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "\p{Lu}", Options: None)
    1.09 1.09 1.09
    1.09
    System.Collections.Sort(IntStruct).List(Size: 512)
    1.09 1.09 1.09
    1.09
    Microsoft.Extensions.Logging.ScopesOverheadBenchmark.FilteredByLevel_InsideScope(HasISupportLoggingScopeLogger: True, CaptureScopes: True)
    1.08 1.25 1.22
    1.24
    1.05
    1.22
    0.99
    1.30
    System.Collections.IterateForEach(String).ImmutableArray(Size: 512)
    1.08 1.17 1.08
    1.17
    System.Collections.IndexerSetReverse(String).IList(Size: 512)
    1.08 1.06 1.08
    1.06
    System.Memory.Span(Int32).IndexOfAnyFourValues(Size: 33)
    1.08 1.08 1.08
    1.08
    System.Tests.Perf_Int128.ToString(value: 170141183460469231731687303715884105727)
    1.08 1.11 1.08
    1.09
    1.10
    1.11
    1.06
    1.14
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenSet(Count: 512)
    1.08 1.08 1.08
    1.08
    System.Linq.Tests.Perf_Enumerable.Skip_One(input: IEnumerable)
    1.08 1.10 1.08
    1.10
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: ".*", Options: Compiled)
    1.08 1.08 1.07
    1.08
    1.09
    1.09
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "\p{Lu}", Options: Compiled)
    1.08 1.21 1.08
    1.21
    System.Numerics.Tests.Perf_VectorOf(Int32).GetHashCodeBenchmark
    1.08 1.08 1.08
    1.08
    System.Tests.Perf_Enum.InterpolateIntoStringBuilder_Flags(value: Red)
    1.08 1.11 1.08
    1.11
    System.Text.Json.Document.Tests.Perf_EnumerateObject.Parse(TestCase: StringProperties)
    1.07 1.12 0.98
    1.08
    1.17
    1.17
    System.Linq.Tests.Perf_Enumerable.WhereSelect(input: IEnumerable)
    1.07 1.08 1.06
    1.08
    System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Bytes_Chars(Size: 128)
    1.07 1.18 1.07
    1.18
    System.Numerics.Tests.Perf_VectorOf(UInt16).GetHashCodeBenchmark
    1.07 1.19 1.07
    1.19
    System.Numerics.Tests.Perf_VectorOf(UInt32).GetHashCodeBenchmark
    1.06 1.10 1.06
    1.10
    System.Linq.Tests.Perf_Enumerable.Where(input: IEnumerable)
    1.06 1.06 1.06
    1.06
    System.Text.Json.Document.Tests.Perf_EnumerateArray.Parse(TestCase: ArrayOfStrings)
    1.06 1.06 1.06
    1.06
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "(?:(?:25[0-5]
    1.06 1.06 1.06
    1.07
    1.08
    1.05
    1.04
    1.05
    System.Collections.Perf_Frozen(NotKnownComparable).ToFrozenSet(Count: 64)
    1.06 1.07 1.06
    1.07
    Benchstone.BenchI.BubbleSort2.Test
    1.04 1.07 1.04
    1.07
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Leipzig.Count(Pattern: "([A-Za-z]awyer
    1.04 1.05 1.02
    1.05
    System.Text.Json.Tests.Perf_Reader.ReadMultiSpanSequenceEmptyLoop(IsDataCompact: True, TestCase: Json40KB)
    1.04 1.07 1.04
    1.07
    Microsoft.Extensions.Logging.LoggingOverhead.TwoArguments_FilteredByLevel
    1.04 1.07 1.04
    1.07
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_Mariomkas.Count(Pattern: "[\w]+://[^/\\s?#]+[^\\s?#]+(?:\?[^\\s#])?(?:#[^\\s])?", Options: Compiled)
    1.04 1.42 1.04
    1.42
    System.Buffers.Text.Tests.Utf8ParserTests.TryParseUInt64Hex(value: 0)
    1.04 1.12 1.04
    1.12
    System.Collections.Perf_Frozen(ReferenceType).TryGetValue_True(Count: 512)
    1.03 1.06 1.03
    1.06
    System.Collections.IndexerSet(String).List(Size: 512)
    1.03 1.05 1.03
    1.05
    System.Memory.Span(Int32).SequenceEqual(Size: 512)
    1.02 1.08 1.07
    1.08
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.MatchesWord(Options: None)
    1.02 1.18 1.02
    1.18
    System.Collections.IterateForEach(String).Array(Size: 512)
    1.01 1.06 1.01
    1.06
    System.Collections.Tests.Perf_PriorityQueue(Guid, Guid).HeapSort(Size: 1000)
    1.01 1.06 1.01
    1.06
    System.Text.Perf_Utf8Encoding.GetByteCount(Input: EnglishAllAscii)
    1.01 1.20 1.01
    1.20
    PerfLabTests.LowLevelPerf.GenericGenericMethod
    1.01 1.10 1.01
    1.10
    Microsoft.Extensions.DependencyInjection.GetService.ServiceScope
    1.01 1.44 0.97
    1.79
    1.04
    1.16
    LinqBenchmarks.Count00ForX
    1.00 1.13 1.00
    1.13
    System.Collections.TryGetValueFalse(Int32, Int32).ImmutableSortedDictionary(Size: 512)
    1.00 1.07 1.00
    1.07
    System.Tests.Perf_Single.IsNaN(value: NaN)
    1.00 1.07 1.00
    1.07
    System.Tests.Perf_Double.IsNaN(value: NaN)
    1.00 1.05 1.00
    1.05
    Benchstone.BenchI.CSieve.Test
    1.00 1.07 1.00
    1.07
    System.Tests.Perf_Double.IsNaN(value: 0)
    1.00 1.20 1.00
    1.20
    System.Collections.IterateFor(Int32).Array(Size: 512)
    1.00 1.07 1.00
    1.07
    System.Tests.Perf_Single.IsNaN(value: 0)
    1.00 1.30 1.00
    1.30
    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, None, False))
    1.00 1.07 1.00
    1.07
    System.Numerics.Tests.Perf_BitOperations.LeadingZeroCount_uint
    1.00 1.30 1.00
    1.30
    System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, None, False))
    1.00 1.21 1.00
    1.21
    System.Collections.IterateFor(Int32).ImmutableArray(Size: 512)
    1.00 1.16 1.00
    1.16
    System.Collections.ContainsTrueComparer(Int32).FrozenSet(Size: 512)
    0.99 1.06 0.99
    1.06
    System.Numerics.Tests.Perf_BitOperations.LeadingZeroCount_ulong
    0.99 1.57 0.91
    1.57
    System.Collections.TryGetValueTrue(Int32, Int32).IDictionary(Size: 512)
    0.99 1.11 0.99
    1.11
    System.Text.Json.Tests.Perf_Basic.WriteBasicUtf8(Formatted: False, SkipValidation: False, DataSize: 100000)
    0.99 1.84 0.99
    1.84
    System.Text.Json.Tests.Perf_Get.GetBoolean
    0.99 1.18 0.99
    1.18
    System.Collections.IterateForEach(Int32).Array(Size: 512)
    0.99 1.20 0.99
    1.20
    System.Linq.Tests.Perf_Enumerable.WhereSingle_LastElementMatches(input: List)
    0.99 1.08 0.99
    1.08
    System.Linq.Tests.Perf_Enumerable.ToDictionary(input: List)
    0.98 1.16 1.08
    1.16
    0.92
    1.16
    System.Collections.Perf_Frozen(NotKnownComparable).Contains_True(Count: 64)
    0.97 1.08 0.97
    1.08
    LinqBenchmarks.Where01LinqQueryX
    0.97 1.23 0.86
    1.23
    System.Collections.Sort(Int32).LinqQuery(Size: 512)
    0.97 1.07 0.98
    1.07
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsMatch(Options: IgnoreCase, Compiled)
    0.97 1.06 0.97
    1.06
    System.Collections.ContainsKeyTrue(String, String).ConcurrentDictionary(Size: 512)
    0.97 1.16 0.97
    1.16
    System.Linq.Tests.Perf_Enumerable.Count(input: IEnumerable)
    0.97 1.08 0.97
    1.08
    System.Linq.Tests.Perf_Enumerable.WhereSingleOrDefault_LastElementMatches(input: List)
    0.96 1.12 0.96
    1.12
    System.Linq.Tests.Perf_Enumerable.OrderByDescending(input: IEnumerable)
    0.95 1.11 0.97
    1.11
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: Compiled)
    0.95 1.12 0.95
    1.12
    System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: IgnoreCase, Compiled)
    0.94 1.08 0.94
    1.08
    LinqBenchmarks.Where01LinqMethodX
    0.93 1.13 0.93
    1.13
    System.Text.Json.Tests.Perf_Basic.WriteBasicUtf8(Formatted: False, SkipValidation: True, DataSize: 100000)
    0.93 1.14 0.93
    1.14
    System.Collections.IterateForEach(Int32).IEnumerable(Size: 512)
    0.92 1.06 0.93
    1.06
    0.92
    1.06
    System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "the", Options: Compiled)
    0.91 1.11 0.91
    1.11
    0.91
    1.11
    System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_FirstElementMatches(input: Array)
    0.88 1.37 0.88
    1.37
    System.Linq.Tests.Perf_Enumerable.SelectToList(input: Array)
    0.87 1.12 0.87
    1.12
    System.Collections.Sort(BigStruct).List(Size: 512)
    0.85 1.16 0.85
    1.16
    System.Collections.Sort(IntStruct).Array_ComparerClass(Size: 512)
    0.83 1.36 0.83
    1.36
    System.Linq.Tests.Perf_Enumerable.SelectToArray(input: List)
    0.83 1.07 0.83
    1.07
    System.Collections.Sort(IntStruct).LinqQuery(Size: 512)
    0.82 1.24 0.82
    1.24
    System.Collections.Sort(IntStruct).Array_Comparison(Size: 512)
    0.81 1.08 0.81
    1.08
    System.ComponentModel.Tests.Perf_TypeDescriptorTests.GetConverter(typeToConvert: typeof(System.Enum))
    0.79 1.07 0.83
    1.07
    System.Collections.TryGetValueTrue(Int32, Int32).SortedDictionary(Size: 512)
    0.76 1.23 0.76
    1.23
    System.Perf_Convert.ToBase64CharArray(binaryDataSize: 1024, formattingOptions: None)
    0.76 1.06 0.76
    1.06
    LinqBenchmarks.Where00LinqMethodX
    0.76 1.14 0.76
    1.14
    System.Linq.Tests.Perf_Enumerable.WhereSingleOrDefault_LastElementMatches(input: Array)
    0.74 1.09 0.74
    1.09
    System.Collections.ContainsTrueComparer(Int32).ImmutableHashSet(Size: 512)
    0.73 1.32 0.73
    1.32
    System.Linq.Tests.Perf_Enumerable.WhereLast_LastElementMatches(input: IEnumerable)
    0.66 1.08 0.66
    1.08
    System.Linq.Tests.Perf_Enumerable.WhereFirst_LastElementMatches(input: Array)
    0.63 1.15 0.63
    1.15
    System.Linq.Tests.Perf_Enumerable.WhereFirst_LastElementMatches(input: IEnumerable)
    0.60 1.06 0.60
    1.06
    System.Linq.Tests.Perf_Enumerable.SequenceEqual(input1: IEnumerable, input2: IEnumerable)
    0.40 1.46 0.40
    1.46
    System.Linq.Tests.Perf_Enumerable.ElementAt(input: IList)
    0.10 1.09 0.10
    1.09
    System.Linq.Tests.Perf_Enumerable.WhereLast_LastElementMatches(input: List)
  14. AndyAyersMS commented on Jul 2, 2024

    @AndyAyersMS
    Member

    System.Collections.IterateForEach<Int32>.ImmutableArray(Size: 512)

    Diff is small codegen diff in the inner loop.

    Also note this loop is down-countable and amenable to store sinking and such, really we shouldn't be looping at all (or the benchmark needs to merge all reads).

    image

  15. AndyAyersMS commented on Jul 2, 2024

    @AndyAyersMS
    Member

    Not quite sure how to unwedge this case. We start with something like
    image - 2024-07-02T135112 877

    Cross-block AP modifies the use of V7 in the loop:
    image - 2024-07-02T135129 441
    Then we duplicate the loop test block:
    image - 2024-07-02T135247 818
    Now both V04 and V07 are loop-carried, and have overlapping lifetimes.

    Seems like we could realize that the PHIs for V04 and V07 have identical VNs in both phi operands (we don't seem to add the VN for the backedge ones today) and decide that one of the two's uses could be replaced with the other. This would remove a loop-carried value and hopefully merge them into a single variable like we had before.

    I don't see how morph can anticipate this case; the problematic flow only gets created later.

  16. AndyAyersMS commented on Jul 19, 2024

    @AndyAyersMS
    Member

    Some post-fix results:

    newplot - 2024-07-19T103844 517
    newplot - 2024-07-19T104145 794

  17. locked and limited conversation to collaborators on Aug 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

PGOPriority:2Work that is important, but not critical for the releasearch-x64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIruntime-coreclrspecific to the CoreCLR runtimetenet-performancePerformance related issuetenet-performance-benchmarksIssue from performance benchmark

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions