Skip to content

[JitDiff X64] [danmoseley] Improve HashSet<T> performance by enabling JIT bo ... #1831

@MihuBot

Description

@MihuBot

Job completed in 16 minutes 3 seconds (remote runner delay: 1 minute 20 seconds).
dotnet/runtime#125893

Main commit: dotnet/runtime@ebb0dea
PR commit: danmoseley/runtime@1b6d9f9

Diffs

Diffs
Found 84 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45408075
Total bytes of diff: 45407773
Total bytes of delta: -302 (-0.00 % of base)
Total relative delta: -0.54
    diff is an improvement.
    relative diff is an improvement.


Top file improvements (bytes):
        -302 : System.Private.CoreLib.dasm (-0.00 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 259 unchanged.

Top method regressions (bytes):
           2 (0.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[int]]:FindItemIndex(System.Nullable`1[int]):int:this (FullOpts)
           2 (0.33 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)

Top method improvements (bytes):
         -20 (-2.41 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[double]:AddIfNotPresent(double,byref):bool:this (FullOpts)
         -20 (-2.63 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):bool:this (FullOpts)
         -16 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -15 (-2.72 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[double,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -15 (-2.59 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -14 (-1.83 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Numerics.Vector`1[float]]:AddIfNotPresent(System.Numerics.Vector`1[float],byref):bool:this (FullOpts)
         -13 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[byte,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -13 (-2.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[int,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -13 (-2.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[long,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -13 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[short,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -12 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[byte]:AddIfNotPresent(byte,byref):bool:this (FullOpts)
         -12 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[short]:AddIfNotPresent(short,byref):bool:this (FullOpts)
         -11 (-2.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):bool:this (FullOpts)
         -11 (-2.74 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[long]:Remove(long):bool:this (FullOpts)
         -11 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -10 (-1.46 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[int]:AddIfNotPresent(int,byref):bool:this (FullOpts)
         -10 (-2.13 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -7 (-1.73 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[byte]:Remove(byte):bool:this (FullOpts)
          -7 (-1.73 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[short]:Remove(short):bool:this (FullOpts)
          -7 (-0.83 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[int]]:AddIfNotPresent(System.Nullable`1[int],byref):bool:this (FullOpts)
          -7 (-1.43 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Numerics.Vector`1[float]]:FindItemIndex(System.Numerics.Vector`1[float]):int:this (FullOpts)
          -4 (-0.95 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[byte]:FindItemIndex(byte):int:this (FullOpts)
          -4 (-0.80 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[double]:Remove(double):bool:this (FullOpts)
          -4 (-0.58 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[long]:AddIfNotPresent(long,byref):bool:this (FullOpts)
          -4 (-0.95 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[short]:FindItemIndex(short):int:this (FullOpts)
          -4 (-1.09 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
          -4 (-0.85 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Numerics.Vector`1[float]]:Remove(System.Numerics.Vector`1[float]):bool:this (FullOpts)
          -3 (-0.61 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[double]:FindItemIndex(double):int:this (FullOpts)
          -3 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):bool:this (FullOpts)
          -3 (-0.57 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.50 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[int]:FindItemIndex(int):int:this (FullOpts)
          -2 (-0.48 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[long]:FindItemIndex(long):int:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[byte,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[double,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[int,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[long,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[short,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)

Top method regressions (percentages):
           2 (0.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[int]]:FindItemIndex(System.Nullable`1[int]):int:this (FullOpts)
           2 (0.33 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)

Top method improvements (percentages):
         -16 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -11 (-2.79 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[int]:Remove(int):bool:this (FullOpts)
         -11 (-2.74 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[long]:Remove(long):bool:this (FullOpts)
         -15 (-2.72 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[double,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -20 (-2.63 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):bool:this (FullOpts)
         -15 (-2.59 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -20 (-2.41 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[double]:AddIfNotPresent(double,byref):bool:this (FullOpts)
         -13 (-2.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[int,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -13 (-2.38 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[long,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -13 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[byte,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -13 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[short,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
         -10 (-2.13 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
         -14 (-1.83 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Numerics.Vector`1[float]]:AddIfNotPresent(System.Numerics.Vector`1[float],byref):bool:this (FullOpts)
          -7 (-1.73 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[byte]:Remove(byte):bool:this (FullOpts)
          -7 (-1.73 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[short]:Remove(short):bool:this (FullOpts)
         -12 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[byte]:AddIfNotPresent(byte,byref):bool:this (FullOpts)
         -12 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[short]:AddIfNotPresent(short,byref):bool:this (FullOpts)
         -10 (-1.46 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[int]:AddIfNotPresent(int,byref):bool:this (FullOpts)
          -7 (-1.43 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Numerics.Vector`1[float]]:FindItemIndex(System.Numerics.Vector`1[float]):int:this (FullOpts)
         -11 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Add(System.Nullable`1[int]):bool:this (FullOpts)
          -4 (-1.09 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:FindItemIndex(System.__Canon):int:this (FullOpts)
          -4 (-0.95 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[byte]:FindItemIndex(byte):int:this (FullOpts)
          -4 (-0.95 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[short]:FindItemIndex(short):int:this (FullOpts)
          -4 (-0.85 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Numerics.Vector`1[float]]:Remove(System.Numerics.Vector`1[float]):bool:this (FullOpts)
          -7 (-0.83 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[int]]:AddIfNotPresent(System.Nullable`1[int],byref):bool:this (FullOpts)
          -4 (-0.80 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[double]:Remove(double):bool:this (FullOpts)
          -3 (-0.61 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[double]:FindItemIndex(double):int:this (FullOpts)
          -4 (-0.58 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[long]:AddIfNotPresent(long,byref):bool:this (FullOpts)
          -3 (-0.57 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -3 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):bool:this (FullOpts)
          -2 (-0.50 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[int]:FindItemIndex(int):int:this (FullOpts)
          -2 (-0.48 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[long]:FindItemIndex(long):int:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[int,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[byte,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[long,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[short,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)
          -2 (-0.45 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[double,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):bool:this (FullOpts)

40 total methods with Code Size differences (38 improved, 2 regressed), 284847 unchanged.

--------------------------------------------------------------------------------

Artifacts:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions