Skip to content

[Perf] Windows/x64: 2 Regressions on 10/9/2024 1:12:38 AM #108893

Closed

Description

@performanceautofiler

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline 848cabd34197b028c96baa6ead0350151fe9c87f
Compare 87273d64859e8bf5856d176915624e6f92ed3baf
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in PerfLabTests.DelegatePerf

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
25.09 ms 28.19 ms 1.12 0.04 True
2.61 ms 2.91 ms 1.11 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'PerfLabTests.DelegatePerf*'
Details

PerfLabTests.DelegatePerf.MulticastDelegateInvoke(length: 1000)

ETL Files

Histogram

JIT Disasms

PerfLabTests.DelegatePerf.MulticastDelegateInvoke(length: 100)

ETL Files

Histogram

JIT Disasms

Docs

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

Activity

  1. ghost added
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Oct 15, 2024
  2. DrewScoggins commented on Oct 15, 2024

    @DrewScoggins
    Member

    Related to #108414.

  3. dotnet-policy-service commented on Oct 17, 2024

    @dotnet-policy-service
    Contributor

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

  4. added this to the 10.0.0 milestone on Oct 22, 2024
  5. removed
    untriagedNew issue has not been triaged by the area owner
    on Oct 22, 2024
  6. removed
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Oct 24, 2024
  7. noahfalk commented on Aug 6, 2025

    @noahfalk
    Member

    @jkotas - it looks like changes to the multicast delegate debugger callbacks incurred a regression. We knew such regressions were possible when we started down this path so I just want to confirm this is still the approach you'd prefer? If so I'll resolve this issue closed by design.

    fyi @lateralusX since you took over other similar changes and I think you had some concerns about the perf implications.

  8. jkotas commented on Aug 7, 2025

    @jkotas
    Member

    This does not look like a real regression to me. The microbenchmark is noisy and it just had a bad streak around Oct 2024. It came back after a few weeks:

    Image
  9. lateralusX commented on Aug 7, 2025

    @lateralusX
    Member

    I currently walk over current changes + fixing up the rest of the stubs doing some alignment and sharing code that might move existing logic closer to what we have in the past, hopefully that will keep any perf regression at bay. For the delegate case, I see that it was noise and that particular implementation, the IL in this case now checks if a global is not 0 to decide if it should call multicast delegate helper compared to a flag check on a global, so maybe the old way checking produced slightly more efficient code, but I would say if it ends up as different, its a very very small diff, that code also comes in under Delegate_GetMulticastInvokeSlow, so we are already on the slow path in this case. Don't see other changes in that PR that is in play when debugger is not attached.

  10. locked and limited conversation to collaborators on Sep 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions