Skip to content

[Perf] Windows/x64: Half and FrozenDictionary Regressions on 1/28/2025 11:31:49 PM +00:00 #112135

Closed

Description

@performanceautofiler

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline d20c35e05c16dd2ec9cddd4259738cc02228d425
Compare d9b75154ad360154b863ee01b72fbef94de261b0
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Tests.Perf_Half

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
1.01 ns 2.25 ns 2.24 0.04 False
1.01 ns 2.25 ns 2.24 0.04 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Half*'
Details

System.Tests.Perf_Half.HalfToSingle(value: 12344)

ETL Files

Histogram

JIT Disasms

System.Tests.Perf_Half.HalfToSingle(value: NaN)

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 d20c35e05c16dd2ec9cddd4259738cc02228d425
Compare d9b75154ad360154b863ee01b72fbef94de261b0
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.Perf_Frozen<Int16>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
50.64 ns 59.55 ns 1.18 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Perf_Frozen&lt;Int16&gt;*'
Details

System.Collections.Perf_Frozen<Int16>.ToFrozenDictionary(Count: 4)

ETL Files

Histogram

JIT Disasms

Docs

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

Activity

  1. changed the title [-][Perf] Windows/x64: 3 Regressions on 1/28/2025 11:31:49 PM +00:00[/-] [+][Perf] Windows/x64: Half and FrozenDictionary Regressions on 1/28/2025 11:31:49 PM +00:00[/+] on Feb 4, 2025
  2. ghost added
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Feb 4, 2025
  3. added
    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
    on Feb 6, 2025
  4. dotnet-policy-service commented on Feb 6, 2025

    @dotnet-policy-service
    Contributor

    Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
    See info in area-owners.md if you want to be subscribed.

  5. removed
    untriagedNew issue has not been triaged by the area owner
    on Feb 6, 2025
  6. added this to the 10.0.0 milestone on Feb 6, 2025
  7. xtqqczze commented on Feb 7, 2025

    @xtqqczze
    Contributor

    @tannergooding Is this beneficial? 2 bytes higher in code size, but 0.75 lower PerfScore.

    MihuBot/runtime-utils#854

     ; Assembly listing for method System.Half:op_Explicit(float):System.Half (FullOpts)
    +       xor      ecx, ecx
    +       mov      edx, -1
            vucomiss xmm0, xmm0
    -       setp     cl
    -       movzx    rcx, cl
    -       dec      ecx
    +       cmovnp   ecx, edx

    Related: #61761 (comment)

    Originally posted by @xtqqczze in #111024 (comment)

  8. stephentoub commented on Feb 8, 2025

    @stephentoub
    Member

    The ToFrozenDictionary one is acceptable. #112298 will help a little, but this is a 9ns regression when constructing the FrozenDictionary, in order to improve the throughput of accessing it. That kind of tradeoff is the main reason this type exists: we're ok spending a bit more at construction in order to optimize throughput of reads.

  9. removed
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Feb 18, 2025
  10. EgorBo commented on Jul 16, 2025

    @EgorBo
    Member

    Closing per Stephen comment. All Half-related regressions seem no longer relevant, e.g.

    Image
  11. locked and limited conversation to collaborators on Aug 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions