Skip to content

Conversation

@huoyaoyuan
Copy link
Member

Closes #4207

Codegen for minimal sample is recorded in #4207 (comment) . How to confirm it in larger range?

@ghost
Copy link

ghost commented Dec 23, 2021

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Dec 23, 2021
@huoyaoyuan huoyaoyuan added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Dec 23, 2021
@ghost
Copy link

ghost commented Dec 23, 2021

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

Issue Details

Closes #4207

Codegen for minimal sample is recorded in #4207 (comment) . How to confirm it in larger range?

Author: huoyaoyuan
Assignees: -
Labels:

area-CodeGen-coreclr, community-contribution

Milestone: -

@am11
Copy link
Member

am11 commented Dec 23, 2021

Closes #4207

If PR is closing the issue, then this workaround should be removed from all places?

$ git grep -l 'github.*4207'

src/coreclr/System.Private.CoreLib/src/System/MulticastDelegate.cs
src/coreclr/nativeaot/System.Private.CoreLib/src/System/MulticastDelegate.cs
src/libraries/System.Private.CoreLib/src/System/DateTime.cs
src/libraries/System.Private.CoreLib/src/System/Delegate.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/Ordinal.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/SortVersion.cs
src/libraries/System.Private.CoreLib/src/System/Number.Parsing.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/Assembly.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/ConstructorInfo.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/EventInfo.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/FieldInfo.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/MemberInfo.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/MethodBase.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/MethodInfo.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/Module.cs
src/libraries/System.Private.CoreLib/src/System/Reflection/PropertyInfo.cs
src/libraries/System.Private.CoreLib/src/System/String.cs
src/libraries/System.Private.CoreLib/src/System/Text/Unicode/Utf8Utility.Helpers.cs
src/libraries/System.Private.CoreLib/src/System/Version.cs
src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/ContinuationTests.NullToken.cs

@huoyaoyuan
Copy link
Member Author

If PR is closing the issue, then this workaround should be removed from all places?

It should be. I don't mentioned that the workaround is used so many places. How to view the codegen diff?

@SingleAccretion
Copy link
Contributor

How to view the codegen diff?

One way would be to use jitutils, by collecting the .dasms with the jit-dasm. Say from two CG runs on the same CoreRoot and different CoreLibs (since the method is marked as [NonVersionable], it should be fine from the inlining standpoint).

FWIW, I agree that this pattern should no longer be necessary after #61023 and #61275.

@am11
Copy link
Member

am11 commented Dec 23, 2021

How to view the codegen diff?

With runtime checked build (./build.sh clr+libs -rc Checked -c Release), I use DOTNET_JitDisasm=Foo artifacts/bin/...path/to/working/corerun path/to/your_assembly.dll where Foo is the name of method (in your_assembly.dll) you want to get codegen of. To get codegen of all methods, replace Foo with *.

@am11
Copy link
Member

am11 commented Dec 23, 2021

given:

    public bool M1(Delegate? f) {
        return f is null;
    }
    
    public bool M2(Delegate? f) {
        return f is null ? true : false;
    }

It used to be the case that codegen was better for M2 than M1, but now it is the opposite. I think the expectation at some point was to get identical codegen so perhaps #4207 still needs some work?

@huoyaoyuan
Copy link
Member Author

There are more places if I search for ? true : false. I'm verifying them pattern by pattern.

@EgorBo
Copy link
Member

EgorBo commented Dec 23, 2021

It used to be the case that codegen was better for M2 than M1

It used to be always situational, in some cases ? true : false helped, in some made codegen worse (after inlining of those M1 and M2)
As far as I remember a proper solution for this problem was "Forward Substitution" pass in JIT which is still not implemented there so I am not sure hack is not needed anymore, perhaps Jump-Threading fixed some patterns.
UPD: Ah, didn't notice the link to #61023

@EgorBo
Copy link
Member

EgorBo commented Dec 23, 2021

jit-diff for String.IsNullOrEmpty change only:

Found 274 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41113992
Total bytes of diff: 41114600
Total bytes of delta: 608 (0.00 % of base)
Total relative delta: NaN
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
         608 : System.Private.CoreLib.dasm (0.02% of base)

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

Top method regressions (bytes):
          42 ( 6.69% of base) : System.Private.CoreLib.dasm - System.ObjectDisposedException:get_Message():System.String:this
          42 ( 8.12% of base) : System.Private.CoreLib.dasm - System.SR:Format(System.String,System.Object[]):System.String
          36 ( 4.91% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ActivityTracker:NormalizeActivityName(System.String,System.String,int):System.String
          26 ( 2.76% of base) : System.Private.CoreLib.dasm - System.BadImageFormatException:ToString():System.String:this
          24 ( 1.88% of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:GetRealFormat(System.ReadOnlySpan`1[System.Char],System.Globalization.DateTimeFormatInfo):System.String
          23 ( 3.80% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.SwitchExpressionException:get_Message():System.String:this
          21 ( 4.45% of base) : System.Private.CoreLib.dasm - ActivityInfo:LiveActivities(System.Diagnostics.Tracing.ActivityTracker+ActivityInfo):System.String
          21 ( 4.93% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:CreateQualifiedName(System.String,System.String):System.String
          20 ( 4.07% of base) : System.Private.CoreLib.dasm - System.Reflection.ParameterInfo:ToString():System.String:this
          19 ( 3.24% of base) : System.Private.CoreLib.dasm - System.Reflection.CustomAttributeNamedArgument:ToString():System.String:this
          19 ( 3.31% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeEventInfo:ToString():System.String:this
          19 ( 4.06% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeFieldInfo:ToString():System.String:this
          19 ( 6.01% of base) : System.Private.CoreLib.dasm - System.Resources.ResourceManager:GetResourceFileName(System.Globalization.CultureInfo):System.String:this
          19 ( 3.92% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetDisplayMessage(int,System.String,System.String):System.String
          17 ( 3.08% of base) : System.Private.CoreLib.dasm - System.ArgumentException:get_Message():System.String:this
          16 ( 3.35% of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.ComSourceInterfacesAttribute:.ctor(System.Type,System.Type):this
          15 ( 1.16% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.TypeNameBuilder:AddAssemblyQualifiedName(System.Type,int):this
          13 ( 2.08% of base) : System.Private.CoreLib.dasm - System.IO.DriveInfoInternal:NormalizeDriveName(System.String):System.String
          11 ( 1.07% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_NativeName():System.String:this
          11 ( 1.22% of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.ExternalException:ToString():System.String:this
          10 ( 2.24% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Contracts.Contract:Assert(bool,System.String)
          10 ( 2.24% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Contracts.Contract:Assume(bool,System.String)
           9 ( 0.35% of base) : System.Private.CoreLib.dasm - <WriteToFileAsync>d__88:MoveNext():this
           8 (100.00% of base) : System.Private.CoreLib.dasm - Internal.Runtime.CompilerServices.Unsafe:Add(byref,int):byref (1 base, 2 diff methods)
           8 ( 0.13% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this
           8 ( 1.33% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_FullDateTimePattern():System.String:this
           8 ( 1.33% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_GeneralLongTimePattern():System.String:this
           8 ( 1.33% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_GeneralShortTimePattern():System.String:this
           8 ( 1.13% of base) : System.Private.CoreLib.dasm - System.IO.FileLoadException:ToString():System.String:this
           8 ( 1.13% of base) : System.Private.CoreLib.dasm - System.IO.FileNotFoundException:ToString():System.String:this
           8 ( 1.94% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String
           8 ( 2.18% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String
           8 ( 0.30% of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo:TryCreateAdjustmentRules(System.String,byref,byref,byref,int):bool
           6 ( 2.28% of base) : System.Private.CoreLib.dasm - Internal.Console:WriteLine(System.String)
           6 ( 0.42% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ThrowEventSourceException(System.String,System.Exception):this
           6 ( 0.19% of base) : System.Private.CoreLib.dasm - System.Reflection.CustomAttributeTypedArgument:ToString(bool):System.String:this
           6 ( 2.28% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String):System.String
           5 ( 0.77% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ReportOutOfBandMessage(System.String):this
           5 ( 0.55% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureData(System.String,bool):System.Globalization.CultureData
           5 ( 0.56% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFile(System.String):System.Reflection.Assembly
           5 ( 0.48% of base) : System.Private.CoreLib.dasm - System.StartupHookProvider:CallStartupHook(System.StartupHookProvider+StartupHookNameOrPath)
           4 ( 0.83% of base) : System.Private.CoreLib.dasm - System.ArgumentOutOfRangeException:get_Message():System.String:this
           4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Debug:Write(System.String,System.String)
           4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Debug:WriteLine(System.String,System.String)
           4 ( 0.43% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.DiagnosticCounter:GetMetadataString():System.String:this
           4 ( 0.80% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureNotFoundException:get_Message():System.String:this
           4 ( 1.16% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String
           4 ( 0.53% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFromResolveHandler(System.Object,System.ResolveEventArgs):System.Reflection.Assembly
           4 ( 0.95% of base) : System.Private.CoreLib.dasm - System.Resources.ManifestBasedResourceGroveler:GetManifestResourceNamesList(System.Reflection.Assembly):System.String
           4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.RuntimeType:get_AssemblyQualifiedName():System.String:this
           4 ( 2.00% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String):System.String
           3 ( 1.08% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
           3 ( 0.32% of base) : System.Private.CoreLib.dasm - System.OperatingSystem:get_VersionString():System.String:this
           3 ( 0.44% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeAssembly:InternalGetSatelliteAssembly(System.Globalization.CultureInfo,System.Version,bool):System.Reflection.Assembly:this
           3 ( 0.72% of base) : System.Private.CoreLib.dasm - System.Resources.ManifestBasedResourceGroveler:HandleSatelliteMissing():this
           3 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:ResolveSatelliteAssembly(System.Reflection.AssemblyName):System.Reflection.Assembly:this
           2 ( 0.93% of base) : System.Private.CoreLib.dasm - System.Diagnostics.DebugProvider:WriteLine(System.String):this
           2 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Enum:ToString(System.String):System.String:this
           2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:ConvertWin32GroupString(System.String):System.Int32[]
           2 ( 5.00% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_IsInvariantCulture():bool:this
           2 ( 0.06% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetNFIValues(System.Globalization.NumberFormatInfo):this
           2 ( 0.34% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:get_Parent():System.Globalization.CultureInfo:this
           2 ( 0.04% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:CreateTokenHashTable():System.Globalization.DateTimeFormatInfo+TokenHashValue[]:this
           2 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:Format(System.TimeSpan,System.String,System.IFormatProvider):System.String
           2 ( 0.20% of base) : System.Private.CoreLib.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding)
           2 ( 2.63% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):bool
           2 ( 0.71% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EnsureTrailingSeparator(System.String):System.String
           2 ( 0.98% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EqualStartingCharacterCount(System.String,System.String,bool):int
           2 ( 0.41% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String
           2 ( 0.59% of base) : System.Private.CoreLib.dasm - System.MissingFieldException:get_Message():System.String:this
           2 ( 0.25% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String
           2 ( 1.24% of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyName:get_FullName():System.String:this
           2 ( 0.92% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:MakeArrayType():System.Type:this
           2 ( 0.92% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:MakeByRefType():System.Type:this
           2 ( 0.92% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:MakePointerType():System.Type:this
           2 ( 0.57% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:CheckParameterMetadataType(System.Reflection.ParameterInfo,System.Reflection.NullabilityInfo):this
           2 ( 0.20% of base) : System.Private.CoreLib.dasm - System.Runtime.Versioning.FrameworkName:get_FullName():System.String:this
           2 (10.00% of base) : System.Private.CoreLib.dasm - System.String:IsNullOrEmpty(System.String):bool
           2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.ValueTuple`1:System.IValueTupleInternal.ToStringEnd():System.String:this
           1 ( 0.11% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureDataForRegion(System.String,bool):System.Globalization.CultureData
           1 ( 0.29% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncode(System.String):System.String

Top method improvements (bytes):
         -23 (-8.88% of base) : System.Private.CoreLib.dasm - System.Exception:InternalPreserveStackTrace():this
         -11 (-1.87% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyDependencyResolver:ResolveAssemblyToPath(System.Reflection.AssemblyName):System.String:this
          -8 (-0.93% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:WriteMessageAttrib(System.Text.StringBuilder,System.String,System.String,System.String):this
          -6 (-0.59% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_EnglishName():System.String:this
          -5 (-0.73% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String,System.IO.TextWriter)
          -4 (-0.74% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:AppendKeywords(System.Text.StringBuilder,long,System.String):this
          -4 (-0.59% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String,System.IO.TextWriter)
          -3 (-0.18% of base) : System.Private.CoreLib.dasm - Internal.Runtime.InteropServices.ComActivator:ClassRegistrationScenarioForType(Internal.Runtime.InteropServices.ComActivationContext,bool)
          -2 (-0.04% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):System.Byte[]
          -2 (-0.18% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetFailureMessage(int,System.String):System.String
          -1 (-0.44% of base) : System.Private.CoreLib.dasm - DebugAssertException:Terminate(System.String):System.String
          -1 (-0.21% of base) : System.Private.CoreLib.dasm - Internal.Runtime.InteropServices.IsolatedComponentLoadContext:.ctor(System.String):this
          -1 (-0.27% of base) : System.Private.CoreLib.dasm - System.AppContext:GetBaseDirectoryCore():System.String
          -1 (-0.10% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventCounter:ToString():System.String:this
          -1 (-0.10% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventProvider:GetDataFromController(int,long,byref,byref,byref):bool:this
          -1 (-0.10% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:GetCultureInfo(System.String,System.String):System.Globalization.CultureInfo
          -1 (-0.21% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_FullTimeSpanPositivePattern():System.String:this
          -1 (-0.20% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String):System.String
          -1 (-0.14% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ModuleBuilder:GetTypeNoLock(System.String,bool,bool):System.Type:this
          -1 (-0.19% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.TypeBuilderInstantiation:MakeArrayType(int):System.Type:this
          -1 (-0.20% of base) : System.Private.CoreLib.dasm - System.Reflection.SignatureArrayType:get_Suffix():System.String:this
          -1 (-0.20% of base) : System.Private.CoreLib.dasm - System.Reflection.TypeInfo:GetRankString(int):System.String
          -1 (-0.13% of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this

Top method regressions (percentages):
           8 (100.00% of base) : System.Private.CoreLib.dasm - Internal.Runtime.CompilerServices.Unsafe:Add(byref,int):byref (1 base, 2 diff methods)
           2 (10.00% of base) : System.Private.CoreLib.dasm - System.String:IsNullOrEmpty(System.String):bool
          42 ( 8.12% of base) : System.Private.CoreLib.dasm - System.SR:Format(System.String,System.Object[]):System.String
          42 ( 6.69% of base) : System.Private.CoreLib.dasm - System.ObjectDisposedException:get_Message():System.String:this
          19 ( 6.01% of base) : System.Private.CoreLib.dasm - System.Resources.ResourceManager:GetResourceFileName(System.Globalization.CultureInfo):System.String:this
           2 ( 5.00% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_IsInvariantCulture():bool:this
          21 ( 4.93% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:CreateQualifiedName(System.String,System.String):System.String
          36 ( 4.91% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ActivityTracker:NormalizeActivityName(System.String,System.String,int):System.String
          21 ( 4.45% of base) : System.Private.CoreLib.dasm - ActivityInfo:LiveActivities(System.Diagnostics.Tracing.ActivityTracker+ActivityInfo):System.String
          20 ( 4.07% of base) : System.Private.CoreLib.dasm - System.Reflection.ParameterInfo:ToString():System.String:this
          19 ( 4.06% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeFieldInfo:ToString():System.String:this
          19 ( 3.92% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetDisplayMessage(int,System.String,System.String):System.String
          23 ( 3.80% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.SwitchExpressionException:get_Message():System.String:this
          16 ( 3.35% of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.ComSourceInterfacesAttribute:.ctor(System.Type,System.Type):this
          19 ( 3.31% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeEventInfo:ToString():System.String:this
          19 ( 3.24% of base) : System.Private.CoreLib.dasm - System.Reflection.CustomAttributeNamedArgument:ToString():System.String:this
          17 ( 3.08% of base) : System.Private.CoreLib.dasm - System.ArgumentException:get_Message():System.String:this
          26 ( 2.76% of base) : System.Private.CoreLib.dasm - System.BadImageFormatException:ToString():System.String:this
           2 ( 2.63% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):bool
           6 ( 2.28% of base) : System.Private.CoreLib.dasm - Internal.Console:WriteLine(System.String)
           6 ( 2.28% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String):System.String
          10 ( 2.24% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Contracts.Contract:Assert(bool,System.String)
          10 ( 2.24% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Contracts.Contract:Assume(bool,System.String)
           8 ( 2.18% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String
          13 ( 2.08% of base) : System.Private.CoreLib.dasm - System.IO.DriveInfoInternal:NormalizeDriveName(System.String):System.String
           4 ( 2.00% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String):System.String
           8 ( 1.94% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String
          24 ( 1.88% of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:GetRealFormat(System.ReadOnlySpan`1[System.Char],System.Globalization.DateTimeFormatInfo):System.String
           8 ( 1.33% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_FullDateTimePattern():System.String:this
           8 ( 1.33% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_GeneralLongTimePattern():System.String:this
           8 ( 1.33% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_GeneralShortTimePattern():System.String:this
           2 ( 1.24% of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyName:get_FullName():System.String:this
          11 ( 1.22% of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.ExternalException:ToString():System.String:this
          15 ( 1.16% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.TypeNameBuilder:AddAssemblyQualifiedName(System.Type,int):this
           4 ( 1.16% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String
           8 ( 1.13% of base) : System.Private.CoreLib.dasm - System.IO.FileLoadException:ToString():System.String:this
           8 ( 1.13% of base) : System.Private.CoreLib.dasm - System.IO.FileNotFoundException:ToString():System.String:this
           3 ( 1.08% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
          11 ( 1.07% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_NativeName():System.String:this
           2 ( 0.98% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EqualStartingCharacterCount(System.String,System.String,bool):int
           4 ( 0.95% of base) : System.Private.CoreLib.dasm - System.Resources.ManifestBasedResourceGroveler:GetManifestResourceNamesList(System.Reflection.Assembly):System.String
           2 ( 0.93% of base) : System.Private.CoreLib.dasm - System.Diagnostics.DebugProvider:WriteLine(System.String):this
           2 ( 0.92% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:MakeArrayType():System.Type:this
           2 ( 0.92% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:MakeByRefType():System.Type:this
           2 ( 0.92% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:MakePointerType():System.Type:this
           4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.RuntimeType:get_AssemblyQualifiedName():System.String:this
           4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Debug:Write(System.String,System.String)
           4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Debug:WriteLine(System.String,System.String)
           4 ( 0.83% of base) : System.Private.CoreLib.dasm - System.ArgumentOutOfRangeException:get_Message():System.String:this
           2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.ValueTuple`1:System.IValueTupleInternal.ToStringEnd():System.String:this
           2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:ConvertWin32GroupString(System.String):System.Int32[]
           4 ( 0.80% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureNotFoundException:get_Message():System.String:this
           5 ( 0.77% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ReportOutOfBandMessage(System.String):this
           3 ( 0.72% of base) : System.Private.CoreLib.dasm - System.Resources.ManifestBasedResourceGroveler:HandleSatelliteMissing():this
           2 ( 0.71% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EnsureTrailingSeparator(System.String):System.String
           2 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:Format(System.TimeSpan,System.String,System.IFormatProvider):System.String
           2 ( 0.59% of base) : System.Private.CoreLib.dasm - System.MissingFieldException:get_Message():System.String:this
           2 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Enum:ToString(System.String):System.String:this
           3 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:ResolveSatelliteAssembly(System.Reflection.AssemblyName):System.Reflection.Assembly:this
           2 ( 0.57% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:CheckParameterMetadataType(System.Reflection.ParameterInfo,System.Reflection.NullabilityInfo):this
           5 ( 0.56% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFile(System.String):System.Reflection.Assembly
           5 ( 0.55% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureData(System.String,bool):System.Globalization.CultureData
           4 ( 0.53% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFromResolveHandler(System.Object,System.ResolveEventArgs):System.Reflection.Assembly
           5 ( 0.48% of base) : System.Private.CoreLib.dasm - System.StartupHookProvider:CallStartupHook(System.StartupHookProvider+StartupHookNameOrPath)
           3 ( 0.44% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeAssembly:InternalGetSatelliteAssembly(System.Globalization.CultureInfo,System.Version,bool):System.Reflection.Assembly:this
           4 ( 0.43% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.DiagnosticCounter:GetMetadataString():System.String:this
           6 ( 0.42% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ThrowEventSourceException(System.String,System.Exception):this
           2 ( 0.41% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String
           9 ( 0.35% of base) : System.Private.CoreLib.dasm - <WriteToFileAsync>d__88:MoveNext():this
           2 ( 0.34% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:get_Parent():System.Globalization.CultureInfo:this
           3 ( 0.32% of base) : System.Private.CoreLib.dasm - System.OperatingSystem:get_VersionString():System.String:this
           8 ( 0.30% of base) : System.Private.CoreLib.dasm - System.TimeZoneInfo:TryCreateAdjustmentRules(System.String,byref,byref,byref,int):bool
           1 ( 0.29% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncode(System.String):System.String
           2 ( 0.25% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String
           2 ( 0.20% of base) : System.Private.CoreLib.dasm - System.Runtime.Versioning.FrameworkName:get_FullName():System.String:this
           2 ( 0.20% of base) : System.Private.CoreLib.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding)
           6 ( 0.19% of base) : System.Private.CoreLib.dasm - System.Reflection.CustomAttributeTypedArgument:ToString(bool):System.String:this
           8 ( 0.13% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this
           1 ( 0.11% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureDataForRegion(System.String,bool):System.Globalization.CultureData
           2 ( 0.06% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetNFIValues(System.Globalization.NumberFormatInfo):this
           2 ( 0.04% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:CreateTokenHashTable():System.Globalization.DateTimeFormatInfo+TokenHashValue[]:this

Top method improvements (percentages):
         -23 (-8.88% of base) : System.Private.CoreLib.dasm - System.Exception:InternalPreserveStackTrace():this
         -11 (-1.87% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyDependencyResolver:ResolveAssemblyToPath(System.Reflection.AssemblyName):System.String:this
          -8 (-0.93% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:WriteMessageAttrib(System.Text.StringBuilder,System.String,System.String,System.String):this
          -4 (-0.74% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:AppendKeywords(System.Text.StringBuilder,long,System.String):this
          -5 (-0.73% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String,System.IO.TextWriter)
          -6 (-0.59% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_EnglishName():System.String:this
          -4 (-0.59% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String,System.IO.TextWriter)
          -1 (-0.44% of base) : System.Private.CoreLib.dasm - DebugAssertException:Terminate(System.String):System.String
          -1 (-0.27% of base) : System.Private.CoreLib.dasm - System.AppContext:GetBaseDirectoryCore():System.String
          -1 (-0.21% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:get_FullTimeSpanPositivePattern():System.String:this
          -1 (-0.21% of base) : System.Private.CoreLib.dasm - Internal.Runtime.InteropServices.IsolatedComponentLoadContext:.ctor(System.String):this
          -1 (-0.20% of base) : System.Private.CoreLib.dasm - System.Reflection.SignatureArrayType:get_Suffix():System.String:this
          -1 (-0.20% of base) : System.Private.CoreLib.dasm - System.Reflection.TypeInfo:GetRankString(int):System.String
          -1 (-0.20% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String):System.String
          -1 (-0.19% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.TypeBuilderInstantiation:MakeArrayType(int):System.Type:this
          -2 (-0.18% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetFailureMessage(int,System.String):System.String
          -3 (-0.18% of base) : System.Private.CoreLib.dasm - Internal.Runtime.InteropServices.ComActivator:ClassRegistrationScenarioForType(Internal.Runtime.InteropServices.ComActivationContext,bool)
          -1 (-0.14% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ModuleBuilder:GetTypeNoLock(System.String,bool,bool):System.Type:this
          -1 (-0.13% of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this
          -1 (-0.10% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventCounter:ToString():System.String:this
          -1 (-0.10% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventProvider:GetDataFromController(int,long,byref,byref,byref):bool:this
          -1 (-0.10% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:GetCultureInfo(System.String,System.String):System.Globalization.CultureInfo
          -2 (-0.04% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):System.Byte[]

104 total methods with Code Size differences (23 improved, 81 regressed), 256350 unchanged.

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

@huoyaoyuan
Copy link
Member Author

Why Unsafe.As is in the regression list?

@EgorBo
Copy link
Member

EgorBo commented Dec 23, 2021

Why Unsafe.As is in the regression list?

Hard to say, somehow due to that change it wasn't inlined into System.Reflection.Assembly:CreateQualifiedName so it was compiled separately for diff.

@EgorBo
Copy link
Member

EgorBo commented Dec 23, 2021

@huoyaoyuan
Copy link
Member Author

I confirmed that the patterns where AgressiveInlining removed are all inlined for trivial caller with a ternary. Does this change for different callers?

@EgorBo
Copy link
Member

EgorBo commented Dec 24, 2021

I confirmed that the patterns where AgressiveInlining removed are all inlined for trivial caller with a ternary. Does this change for different callers?

I don't have that locally anymore, you can run it like this:
Clone two dotnet/runtime repos, apply your changes to one of them (they both must be of the same baseline commit), then build both as follows:

build.cmd Clr+Libs -c Release
build.cmd Clr -c Checked
cd src\tests
build.cmd Release generatelayoutonly
cd ..\..

Next step is to clone & build https://github.com/dotnet/jitutils

Then do:

jit-diff diff --output C:\prj\jit-diffs -f --core_root C:\prj\runtime-base\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root --base C:\prj\runtime-base\artifacts\bin\coreclr\windows.x64.Checked --pmi

jit-diff diff --output C:\prj\jit-diffs -f --core_root C:\prj\runtime-pr\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root --base C:\prj\runtime-pr\artifacts\bin\coreclr\windows.x64.Checked --pmi

jit-analyze.bat -b C:\prj\jit-diffs\dasmset_1\base -d C:\prj\jit-diffs\dasmset_2\base -r -c 100
# NOTE: each run jit-diff creates new dasmset_X 

When we work on jit we usually just use SuperPMI.py script but it only catches changes made by the jit itself, not changes in the managed code so the workflow is quite complex.

@huoyaoyuan
Copy link
Member Author

huoyaoyuan commented Dec 25, 2021

JIT diff of current commits:

``` Summary of Code Size diffs: (Lower is better)

Total bytes of base: 62820381
Total bytes of diff: 62825335
Total bytes of delta: 4954 (0.01 % of base)
Total relative delta: 0.63
diff is a regression.
relative diff is a regression.

Top file regressions (bytes):
477 : System.Private.Xml.dasm (0.01% of base)
366 : System.Data.Common.dasm (0.02% of base)
364 : System.Private.DataContractSerialization.dasm (0.04% of base)
322 : Microsoft.Diagnostics.Tracing.TraceEvent.dasm (0.01% of base)
313 : System.Configuration.ConfigurationManager.dasm (0.08% of base)
228 : xunit.execution.dotnet.dasm (0.09% of base)
204 : System.Runtime.Serialization.Formatters.dasm (0.19% of base)
184 : System.DirectoryServices.AccountManagement.dasm (0.04% of base)
174 : System.Security.Cryptography.Xml.dasm (0.09% of base)
174 : System.Net.Http.dasm (0.02% of base)
165 : System.Private.CoreLib.dasm (0.00% of base)
152 : Microsoft.Extensions.Logging.Debug.dasm (2.68% of base)
147 : System.Reflection.Metadata.dasm (0.03% of base)
142 : System.CodeDom.dasm (0.07% of base)
135 : FSharp.Core.dasm (0.00% of base)
132 : System.Management.dasm (0.03% of base)
131 : System.Data.OleDb.dasm (0.04% of base)
129 : ILCompiler.Reflection.ReadyToRun.dasm (0.06% of base)
128 : System.Diagnostics.PerformanceCounter.dasm (0.12% of base)
127 : System.Net.Http.WinHttpHandler.dasm (0.10% of base)
125 : System.Reflection.MetadataLoadContext.dasm (0.05% of base)
123 : Microsoft.VisualBasic.Core.dasm (0.02% of base)
106 : System.Net.Requests.dasm (0.08% of base)
102 : System.Diagnostics.EventLog.dasm (0.08% of base)
95 : System.Composition.Runtime.dasm (0.41% of base)
94 : Microsoft.CodeAnalysis.VisualBasic.dasm (0.00% of base)
92 : Microsoft.Extensions.Logging.EventLog.dasm (0.66% of base)
91 : System.ServiceModel.Syndication.dasm (0.06% of base)
90 : System.Text.Json.dasm (0.01% of base)
86 : System.DirectoryServices.Protocols.dasm (0.08% of base)
85 : Microsoft.Extensions.DependencyModel.dasm (0.12% of base)
82 : Microsoft.Extensions.Configuration.Xml.dasm (0.66% of base)
81 : System.ComponentModel.Composition.dasm (0.02% of base)
70 : Microsoft.Extensions.Configuration.CommandLine.dasm (1.26% of base)
69 : Microsoft.Extensions.Configuration.Abstractions.dasm (1.00% of base)
68 : System.Runtime.Caching.dasm (0.09% of base)
67 : System.ServiceProcess.ServiceController.dasm (0.19% of base)
66 : System.Security.Permissions.dasm (0.39% of base)
66 : System.Data.Odbc.dasm (0.03% of base)
65 : System.IO.Packaging.dasm (0.07% of base)
65 : System.Net.HttpListener.dasm (0.03% of base)
64 : System.IO.Ports.dasm (0.11% of base)
64 : Microsoft.Extensions.FileProviders.Physical.dasm (0.32% of base)
64 : System.Resources.Extensions.dasm (0.18% of base)
64 : Microsoft.Extensions.Hosting.dasm (0.16% of base)
64 : Microsoft.Extensions.Configuration.dasm (0.39% of base)
62 : System.IO.Hashing.dasm (0.48% of base)
62 : System.Memory.Data.dasm (0.46% of base)
62 : System.Numerics.Tensors.dasm (0.02% of base)
62 : Microsoft.Extensions.Logging.dasm (0.19% of base)
62 : Microsoft.Extensions.Options.dasm (0.24% of base)
62 : Microsoft.Win32.SystemEvents.dasm (0.17% of base)
62 : System.Collections.Immutable.dasm (0.00% of base)
62 : System.Threading.AccessControl.dasm (0.21% of base)
62 : Microsoft.Extensions.Configuration.FileExtensions.dasm (0.86% of base)
62 : Microsoft.Extensions.FileProviders.Abstractions.dasm (1.56% of base)
62 : Microsoft.Extensions.Logging.Abstractions.dasm (0.08% of base)
62 : System.Reflection.Context.dasm (0.11% of base)
62 : System.Security.Cryptography.OpenSsl.dasm (0.35% of base)
62 : System.Security.Cryptography.Pkcs.dasm (0.01% of base)
62 : Microsoft.Extensions.Configuration.Ini.dasm (1.15% of base)
62 : Microsoft.Extensions.Configuration.UserSecrets.dasm (1.17% of base)
62 : Microsoft.Extensions.Logging.Console.dasm (0.10% of base)
62 : System.Windows.Extensions.dasm (0.19% of base)
62 : Microsoft.Win32.Registry.AccessControl.dasm (1.83% of base)
62 : System.Security.Cryptography.ProtectedData.dasm (0.80% of base)
62 : System.ComponentModel.Annotations.dasm (0.13% of base)
62 : System.Formats.Cbor.dasm (0.13% of base)
62 : System.Threading.RateLimiting.dasm (0.22% of base)
62 : Microsoft.Extensions.Caching.Memory.dasm (0.28% of base)
62 : Microsoft.Extensions.Configuration.Json.dasm (0.78% of base)
62 : System.Composition.Hosting.dasm (0.07% of base)
62 : System.IO.Pipelines.dasm (0.07% of base)
61 : Microsoft.Extensions.DependencyInjection.Abstractions.dasm (0.19% of base)
60 : Microsoft.Extensions.Logging.Configuration.dasm (0.84% of base)
59 : Microsoft.Extensions.Primitives.dasm (0.21% of base)
57 : System.Private.Xml.Linq.dasm (0.03% of base)
57 : System.Speech.dasm (0.01% of base)
50 : xunit.assert.dasm (0.04% of base)
49 : System.Composition.TypedParts.dasm (0.10% of base)
47 : Microsoft.Extensions.Http.dasm (0.10% of base)
47 : System.Net.Sockets.dasm (0.02% of base)
43 : System.Formats.Asn1.dasm (0.05% of base)
40 : xunit.core.dasm (0.05% of base)
36 : System.Security.Cryptography.Cng.dasm (0.02% of base)
29 : System.Net.WebSockets.dasm (0.03% of base)
28 : System.Drawing.Primitives.dasm (0.06% of base)
27 : System.Security.Claims.dasm (0.12% of base)
27 : System.Private.Uri.dasm (0.03% of base)
26 : System.Net.Primitives.dasm (0.04% of base)
25 : CommandLine.dasm (0.00% of base)
23 : Microsoft.Win32.Registry.dasm (0.06% of base)
17 : System.Net.ServicePoint.dasm (0.34% of base)
17 : Newtonsoft.Json.Bson.dasm (0.02% of base)
17 : System.Diagnostics.DiagnosticSource.dasm (0.01% of base)
17 : Microsoft.Diagnostics.NETCore.Client.dasm (0.14% of base)
15 : System.Net.NameResolution.dasm (0.03% of base)
15 : System.Net.NetworkInformation.dasm (0.03% of base)
15 : System.ComponentModel.TypeConverter.dasm (0.01% of base)
15 : System.Transactions.Local.dasm (0.01% of base)

Top file improvements (bytes):
-1574 : xunit.console.dasm (-1.57% of base)
-392 : Microsoft.CodeAnalysis.dasm (-0.02% of base)
-388 : xunit.runner.reporters.netcoreapp10.dasm (-0.64% of base)
-358 : Microsoft.CodeAnalysis.CSharp.dasm (-0.01% of base)
-221 : Microsoft.Extensions.FileSystemGlobbing.dasm (-0.64% of base)
-208 : Microsoft.CSharp.dasm (-0.05% of base)
-173 : System.Linq.Expressions.dasm (-0.02% of base)
-164 : xunit.runner.utility.netcoreapp10.dasm (-0.07% of base)
-158 : System.Net.Quic.dasm (-0.15% of base)
-90 : Newtonsoft.Json.dasm (-0.01% of base)
-54 : dotnet-Microsoft.XmlSerializer.Generator.dasm (-0.14% of base)
-52 : System.Web.HttpUtility.dasm (-0.47% of base)
-46 : System.Net.Mail.dasm (-0.02% of base)
-43 : System.Reflection.DispatchProxy.dasm (-0.18% of base)
-43 : Microsoft.Extensions.DependencyInjection.dasm (-0.06% of base)
-28 : System.Composition.Convention.dasm (-0.02% of base)
-9 : Microsoft.Extensions.Configuration.Binder.dasm (-0.05% of base)
-8 : System.Net.WebHeaderCollection.dasm (-0.05% of base)
-7 : System.Net.Security.dasm (-0.00% of base)
-5 : runincontext.dasm (-0.04% of base)
-2 : System.Diagnostics.Process.dasm (-0.00% of base)
-2 : System.IO.IsolatedStorage.dasm (-0.01% of base)

138 total files with Code Size differences (22 improved, 116 regressed), 135 unchanged.

Top method regressions (bytes):
126 ( 3.02% of base) : System.Configuration.ConfigurationManager.dasm - MgmtConfigurationRecord:CopyConfigDefinitionsRecursive(ConfigDefinitionUpdates,XmlUtil,XmlUtilWriter,bool,LocationUpdates,SectionUpdates,bool,String,int,int):bool:this
119 (18.51% of base) : System.Runtime.Serialization.Formatters.dasm - FormatterServices:PopulateObjectMembers(Object,ref,ref):Object
96 (10.25% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxFacts:GetText(int):String
95 (19.87% of base) : System.Runtime.Serialization.Formatters.dasm - FormatterServices:GetObjectData(Object,ref):ref
80 ( 0.43% of base) : FSharp.Core.dasm - Array2DModule:CopyTo(ref,int,int,ref,int,int,int,int) (8 methods)
70 ( 4.33% of base) : System.Text.Json.dasm - DebugViewProperty:get_Display():String:this
64 ( 0.89% of base) : System.Private.DataContractSerialization.dasm - DataNode`1:AddQualifiedNameAttribute(ElementData,String,String,String,String,String):this (8 methods)
61 ( 5.54% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:PickPivotAndPartition(Span`1):int (5 methods)
56 ( 0.09% of base) : System.Data.Common.dasm - SortExpressionBuilder`1:CloneCast():SortExpressionBuilder`1:this (64 methods)
55 ( 2.51% of base) : System.Data.OleDb.dasm - OleDbConnectionString:ValidateConnectionString(String):String:this
54 ( 9.87% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForEnumCompare(EnumMapping,String,bool):String:this
53 (10.08% of base) : System.Reflection.Metadata.dasm - BlobBuilder:Display(ref,int):String
53 (10.08% of base) : Microsoft.CodeAnalysis.dasm - BlobBuilder:Display(ref,int):String
53 ( 2.68% of base) : System.Private.Xml.Linq.dasm - XNodeBuilder:WriteEntityRef(String):this
53 ( 8.66% of base) : xunit.execution.dotnet.dasm - XunitSerializationInfo:SerializeTriple(XunitSerializationTriple):String
53 ( 8.66% of base) : xunit.runner.utility.netcoreapp10.dasm - XunitSerializationInfo:SerializeTriple(XunitSerializationTriple):String
51 ( 4.59% of base) : Microsoft.CodeAnalysis.CSharp.dasm - ModifierUtils:ConvertSingleModifierToSyntaxText(int):String
49 ( 7.12% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForEnumMember(String,String,bool):String:this
45 ( 1.75% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:PickPivotAndPartition(Span`1,Span`1):int (5 methods)
43 ( 6.97% of base) : System.CodeDom.dasm - VBCodeGenerator:GenerateEventReferenceExpression(CodeEventReferenceExpression):this
42 ( 2.29% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:IntroSort(Span`1,int) (5 methods)
41 ( 3.71% of base) : System.DirectoryServices.AccountManagement.dasm - ADStoreCtx:GetGroupDnFromGroupID(ref,int):String:this
38 ( 6.29% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - <>c__DisplayClass84_0:b__2(SystemConfigCPUTraceData):this
38 ( 4.58% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:DownHeap(Span`1,int,int) (5 methods)
38 ( 5.79% of base) : System.Private.CoreLib.dasm - ObjectDisposedException:get_Message():String:this
37 ( 5.84% of base) : xunit.execution.dotnet.dasm - TestMethodTestCase:get_BaseDisplayName():String:this
37 ( 6.53% of base) : System.Private.Xml.dasm - XmlReader:get_Name():String:this
36 ( 2.69% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForMember(String,String,TypeDesc):String:this
35 ( 6.07% of base) : System.Private.DataContractSerialization.dasm - JsonDataContractCriticalHelper:.ctor(DataContract):this
33 ( 1.51% of base) : xunit.execution.dotnet.dasm - <>c__DisplayClass6_0:g__GetTypeNameAsString|0(Type):String:this
33 ( 5.20% of base) : xunit.runner.utility.netcoreapp10.dasm - AppDomainManager_NoAppDomain:CreateObject(AssemblyName,String,ref):__Canon:this
33 ( 4.16% of base) : System.Net.Http.dasm - AuthenticationHelper:SetBasicAuthToken(HttpRequestMessage,NetworkCredential,bool)
33 ( 6.29% of base) : System.Private.Xml.dasm - ContextInfo:.ctor(XsltInput):this
33 ( 1.29% of base) : System.Management.dasm - ManagementClassGenerator:ProcessNamingCollisions():this
33 ( 5.88% of base) : System.Composition.Convention.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Composition.TypedParts.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Configuration.ConfigurationManager.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.DirectoryServices.Protocols.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Hashing.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Ports.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Management.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Memory.Data.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Numerics.Tensors.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.FileProviders.Physical.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.Configuration.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Options.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Win32.SystemEvents.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Collections.Immutable.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Reflection.Metadata.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Reflection.MetadataLoadContext.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.Xml.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Threading.AccessControl.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : dotnet-Microsoft.XmlSerializer.Generator.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Binder.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Xml.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.FileProviders.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Http.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.CodeDom.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Diagnostics.PerformanceCounter.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Drawing.Common.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Reflection.Context.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Resources.Extensions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Runtime.Caching.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.OpenSsl.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.Pkcs.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ServiceProcess.ServiceController.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Ini.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.UserSecrets.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Hosting.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.Console.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Primitives.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.DirectoryServices.AccountManagement.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Windows.Extensions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Win32.Registry.AccessControl.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ComponentModel.Composition.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Private.DataContractSerialization.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.ProtectedData.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Permissions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ComponentModel.Composition.Registration.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Diagnostics.EventLog.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Formats.Cbor.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ServiceModel.Syndication.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Threading.RateLimiting.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Caching.Memory.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.CommandLine.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Json.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.DependencyInjection.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.DependencyModel.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Composition.Hosting.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Composition.Runtime.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Data.Odbc.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Data.OleDb.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Packaging.dasm - SR:Format(IFormatProvider,String,ref):String

Top method improvements (bytes):
-474 (-12.96% of base) : Microsoft.CodeAnalysis.dasm - ImmutableSetWithInsertionOrder`1:ToString():String:this (8 methods)
-179 (-7.11% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - MatcherContext:Match(DirectoryInfoBase,String):this
-162 (-24.36% of base) : System.Net.Mail.dasm - MailAddress:get_SmtpAddress():String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_16(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_2(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_9(String):String:this
-134 (-38.84% of base) : Newtonsoft.Json.dasm - <>c:b__4_0(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__4_0(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__24_1(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__24_4(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__25_1(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__25_4(String):String:this
-134 (-38.84% of base) : System.Linq.Expressions.dasm - DebugViewWriter:QuoteName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - _Closure$__:_Lambda$__0-0(String):String:this
-126 (-35.69% of base) : xunit.runner.utility.netcoreapp10.dasm - <>c:b__32_0(String):String:this
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeAnonymousTypeBackingFieldName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeAnonymousTypeParameterName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeBackingFieldName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeFixedFieldImplementationName(String):String
-126 (-35.69% of base) : xunit.console.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
-126 (-35.69% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
-126 (-35.69% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
-125 (-35.51% of base) : xunit.console.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
-125 (-35.51% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
-125 (-35.51% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
-125 (-35.51% of base) : xunit.console.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
-125 (-35.51% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
-125 (-35.51% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
-125 (-35.51% of base) : System.Private.Xml.dasm - ReflectionAwareILGen:GetStringForTypeof(String):String:this
-125 (-35.51% of base) : System.Private.Xml.dasm - XmlLoader:EntitizeName(String):String:this
-122 (-25.68% of base) : dotnet-Microsoft.XmlSerializer.Generator.dasm - Sgen:WriteHeader():this
-105 (-5.09% of base) : Microsoft.Extensions.DependencyInjection.dasm - CallSiteFactory:CreateConstructorCallSite(ResultCache,Type,Type,CallSiteChain):ServiceCallSite:this
-73 (-14.78% of base) : System.Linq.Expressions.dasm - DebugViewWriter:DumpLabel(LabelTarget):this
-71 (-21.13% of base) : xunit.console.dasm - <>c:<.ctor>b__17_1(RuntimeFallbacks):String:this
-71 (-20.23% of base) : Microsoft.Extensions.Configuration.Binder.dasm - <>c:b__15_2(IConfigurationSection):String:this
-71 (-21.13% of base) : System.Speech.dasm - GrammarBuilderPhrase:get_DebugSummary():String:this
-71 (-21.13% of base) : System.Speech.dasm - SrgsText:DebuggerDisplayString():String:this
-70 (-13.01% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForTypeof(String,bool):String:this
-65 (-13.43% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - SynthesizedMyGroupCollectionPropertyAccessorSymbol:MakeSafeName(String):String
-62 (-14.87% of base) : System.Linq.Expressions.dasm - LoadCachedObjectInstruction:ToString():String:this
-61 (-17.73% of base) : Microsoft.CSharp.dasm - ComTypeEnumDesc:ToString():String:this
-61 (-17.78% of base) : Microsoft.CSharp.dasm - ComTypeLibDesc:ToString():String:this
-61 (-17.78% of base) : Microsoft.CSharp.dasm - DispCallable:ToString():String:this
-61 (-15.37% of base) : ILCompiler.TypeSystem.ReadyToRun.dasm - MethodSignature:GetIndexOfCustomModifierOnPointedAtTypeByParameterIndex(int):String
-61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicConnectionHandle):String
-61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicListenerHandle):String
-61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicStreamHandle):String
-61 (-17.78% of base) : System.Drawing.Common.dasm - PrintDocument:ToString():String:this
-60 (-17.19% of base) : xunit.runner.utility.netcoreapp10.dasm - <>c:b__6_1(Type):String:this
-60 (-17.19% of base) : xunit.execution.dotnet.dasm - <>c:b__6_2(Type):String:this
-60 (-17.09% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:LambdaCopyParameterName(ParameterSymbol):String
-60 (-12.68% of base) : System.Web.HttpUtility.dasm - HttpUtility:JavaScriptStringEncode(String,bool):String
-56 (-13.43% of base) : xunit.console.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
-56 (-13.43% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
-56 (-13.43% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
-56 (-14.66% of base) : System.Private.Xml.dasm - XmlLoader:ExpandEntity(XmlEntity):this
-51 (-4.25% of base) : System.Net.Mail.dasm - SmtpClient:ValidateUnicodeRequirement(MailMessage,MailAddressCollection,bool):this
-50 (-0.89% of base) : System.Private.CoreLib.dasm - RuntimeType:InvokeMember(String,int,Binder,Object,ref,ref,CultureInfo,ref):Object:this
-49 (-9.70% of base) : System.CodeDom.dasm - VBCodeGenerator:CreateEscapedIdentifier(String):String:this
-48 (-11.03% of base) : System.Net.Mail.dasm - SafeDeleteContext:ToString():String:this
-48 (-11.03% of base) : System.Net.Security.dasm - SafeDeleteContext:ToString():String:this
-48 (-11.03% of base) : System.Net.Http.dasm - SafeDeleteContext:ToString():String:this
-48 (-11.03% of base) : System.Net.HttpListener.dasm - SafeDeleteContext:ToString():String:this
-47 (-3.94% of base) : System.Private.CoreLib.dasm - DynamicILGenerator:Emit(OpCode,MethodInfo):this
-46 (-1.74% of base) : System.Reflection.DispatchProxy.dasm - ProxyBuilder:AddInterfaceImpl(Type):this
-42 (-1.97% of base) : System.ComponentModel.TypeConverter.dasm - RuntimeLicenseContext:GetSavedLicenseKey(Type,Assembly):String:this
-40 (-3.66% of base) : System.ComponentModel.TypeConverter.dasm - BindingList`1:get_ItemTypeHasDefaultConstructor():bool (8 methods)
-40 (-1.66% of base) : System.Text.Json.dasm - JsonConverter`1:.ctor():this (8 methods)
-40 (-6.94% of base) : System.Composition.Convention.dasm - MethodExpressionAdapter:VerifyMethodInfo(MethodInfo):bool:this (8 methods)
-40 (-6.94% of base) : System.Composition.Convention.dasm - PropertyExpressionAdapter:VerifyPropertyInfo(PropertyInfo):bool:this (8 methods)
-40 (-6.94% of base) : System.ComponentModel.Composition.Registration.dasm - PropertyExpressionAdapter:VerifyPropertyInfo(PropertyInfo):bool:this (8 methods)
-39 (-4.01% of base) : Microsoft.CodeAnalysis.dasm - PdbMetadataWrapper:Microsoft.Cci.IMetaDataImport.GetTypeDefProps(int,long,int,byref,long):int:this
-31 (-6.50% of base) : System.Diagnostics.DiagnosticSource.dasm - DiagnosticSourceEventSource:NewLineSeparate(String,String):String
-31 (-1.72% of base) : System.Configuration.ConfigurationManager.dasm - InternalConfigRoot:GetConfigRecord(String):IInternalConfigRecord:this
-31 (-6.50% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - MatcherContext:CombinePath(String,String):String
-31 (-5.92% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - PatternContextLinear:CalculateStem(FileInfoBase):String:this
-31 (-5.89% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - PatternContextRagged:CalculateStem(FileInfoBase):String:this
-30 (-11.11% of base) : System.Private.CoreLib.dasm - Exception:InternalPreserveStackTrace():this
-29 (-1.42% of base) : System.Net.Http.dasm - d__27:MoveNext():this
-29 (-6.26% of base) : System.Private.CoreLib.dasm - ManifestBasedResourceGroveler:GetNeutralResourcesLanguage(Assembly,byref):CultureInfo
-27 (-1.36% of base) : System.Private.CoreLib.dasm - ModuleBuilder:GetFieldTokenNoLock(FieldInfo):int:this
-26 (-5.08% of base) : Microsoft.CodeAnalysis.dasm - MetadataTypeName:get_FullName():String:this
-26 (-3.21% of base) : Microsoft.CodeAnalysis.dasm - PEModule:GetFullNameOrThrow(StringHandle,StringHandle):String:this
-24 (-3.94% of base) : System.Private.CoreLib.dasm - DynamicILGenerator:Emit(OpCode,FieldInfo):this
-23 (-4.74% of base) : ILCompiler.TypeSystem.ReadyToRun.dasm - Format:Type(String,String):String
-23 (-4.74% of base) : Microsoft.CodeAnalysis.dasm - MetadataHelpers:BuildQualifiedName(String,String):String
-23 (-1.45% of base) : System.Configuration.ConfigurationManager.dasm - MgmtConfigurationRecord:WriteNewConfigDefinitionsRecursive(XmlUtilWriter,SectionUpdates,int,int,bool):bool:this
-23 (-1.22% of base) : System.Private.CoreLib.dasm - ModuleBuilder:GetMethodTokenNoLock(MethodInfo,bool):int:this
-22 (-4.55% of base) : System.Private.CoreLib.dasm - ILGenerator:Emit(OpCode,ConstructorInfo):this
-22 (-0.85% of base) : System.Private.Xml.dasm - XmlSerializationReaderCodeGen:WriteHashtable(EnumMapping,String):String:this
-21 (-1.41% of base) : System.CodeDom.dasm - CodeTypeReference:Initialize(String,int):this
-21 (-1.42% of base) : System.Private.DataContractSerialization.dasm - CodeTypeReference:Initialize(String,int):this
-20 (-22.73% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:GreaterThan(byref,byref):bool (5 methods)
-20 (-21.74% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:LessThan(byref,byref):bool (5 methods)
-20 (-22.73% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:GreaterThan(byref,byref):bool (5 methods)
-20 (-21.74% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:LessThan(byref,byref):bool (5 methods)
-20 (-2.75% of base) : System.Runtime.Serialization.Formatters.dasm - ObjectManager:DoValueTypeFixup(FieldInfo,ObjectHolder,Object):bool:this
-20 (-0.57% of base) : System.Private.Xml.dasm - XmlSerializationWriterCodeGen:WriteEnumAndArrayTypes():this
-19 (-2.18% of base) : System.Data.Odbc.dasm - DbConnectionFactory:GetConnectionPoolGroup(DbConnectionPoolKey,DbConnectionPoolGroupOptions,byref):DbConnectionPoolGroup:this
-19 (-2.98% of base) : System.Private.CoreLib.dasm - DynamicILGenerator:Emit(OpCode,ConstructorInfo):this

Top method regressions (percentages):
95 (19.87% of base) : System.Runtime.Serialization.Formatters.dasm - FormatterServices:GetObjectData(Object,ref):ref
119 (18.51% of base) : System.Runtime.Serialization.Formatters.dasm - FormatterServices:PopulateObjectMembers(Object,ref,ref):Object
96 (10.25% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxFacts:GetText(int):String
53 (10.08% of base) : System.Reflection.Metadata.dasm - BlobBuilder:Display(ref,int):String
53 (10.08% of base) : Microsoft.CodeAnalysis.dasm - BlobBuilder:Display(ref,int):String
2 (10.00% of base) : System.Private.CoreLib.dasm - String:IsNullOrEmpty(String):bool
54 ( 9.87% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForEnumCompare(EnumMapping,String,bool):String:this
2 ( 9.09% of base) : System.Private.CoreLib.dasm - Number:IsWhite(int):bool
53 ( 8.66% of base) : xunit.execution.dotnet.dasm - XunitSerializationInfo:SerializeTriple(XunitSerializationTriple):String
53 ( 8.66% of base) : xunit.runner.utility.netcoreapp10.dasm - XunitSerializationInfo:SerializeTriple(XunitSerializationTriple):String
2 ( 8.00% of base) : System.ComponentModel.Composition.dasm - CompositionServices:IsContractNameSameAsTypeIdentity(ExportAttribute):bool
8 ( 7.34% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:SwapIfGreater(byref,byref) (5 methods)
49 ( 7.12% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForEnumMember(String,String,bool):String:this
43 ( 6.97% of base) : System.CodeDom.dasm - VBCodeGenerator:GenerateEventReferenceExpression(CodeEventReferenceExpression):this
2 ( 6.90% of base) : CommandLine.dasm - <>c:b__24_0(String):bool:this
37 ( 6.53% of base) : System.Private.Xml.dasm - XmlReader:get_Name():String:this
14 ( 6.48% of base) : Microsoft.Extensions.Configuration.Xml.dasm - XmlStreamConfigurationProvider:g__ProcessElementChild|7_4(Prefix,XmlConfigurationElement,Nullable`1,byref)
21 ( 6.46% of base) : System.Private.CoreLib.dasm - ResourceManager:GetResourceFileName(CultureInfo):String:this
38 ( 6.29% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - <>c__DisplayClass84_0:b__2(SystemConfigCPUTraceData):this
33 ( 6.29% of base) : System.Private.Xml.dasm - ContextInfo:.ctor(XsltInput):this
35 ( 6.07% of base) : System.Private.DataContractSerialization.dasm - JsonDataContractCriticalHelper:.ctor(DataContract):this
2 ( 6.06% of base) : Microsoft.Extensions.DependencyModel.dasm - <>c:b__15_0(RuntimeAssetGroup):bool:this
2 ( 6.06% of base) : System.Security.Claims.dasm - ClaimsIdentity:get_IsAuthenticated():bool:this
8 ( 6.06% of base) : System.Private.CoreLib.dasm - DynamicResolver:Finalize():this
2 ( 6.06% of base) : System.Drawing.Common.dasm - Font:get_IsSystemFont():bool:this
2 ( 6.06% of base) : System.Net.Http.dasm - WinInetProxyHelper:get_ManualSettingsUsed():bool:this
2 ( 6.06% of base) : System.Net.Http.WinHttpHandler.dasm - WinInetProxyHelper:get_ManualSettingsUsed():bool:this
33 ( 5.88% of base) : System.Composition.Convention.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Composition.TypedParts.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Configuration.ConfigurationManager.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.DirectoryServices.Protocols.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Hashing.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Ports.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Management.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Memory.Data.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Numerics.Tensors.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.FileProviders.Physical.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.Configuration.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Options.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Win32.SystemEvents.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Collections.Immutable.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Reflection.Metadata.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Reflection.MetadataLoadContext.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.Xml.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Threading.AccessControl.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : dotnet-Microsoft.XmlSerializer.Generator.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Binder.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Xml.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.FileProviders.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Http.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.CodeDom.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Diagnostics.PerformanceCounter.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Drawing.Common.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Reflection.Context.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Resources.Extensions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Runtime.Caching.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.OpenSsl.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.Pkcs.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ServiceProcess.ServiceController.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Ini.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.UserSecrets.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Hosting.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Logging.Console.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Primitives.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.DirectoryServices.AccountManagement.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Windows.Extensions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Win32.Registry.AccessControl.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ComponentModel.Composition.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Private.DataContractSerialization.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Cryptography.ProtectedData.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Security.Permissions.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ComponentModel.Composition.Registration.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Diagnostics.EventLog.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Formats.Cbor.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.ServiceModel.Syndication.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Threading.RateLimiting.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Caching.Memory.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.CommandLine.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Json.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.DependencyInjection.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : Microsoft.Extensions.DependencyModel.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Composition.Hosting.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Composition.Runtime.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Data.Odbc.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Data.OleDb.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Packaging.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.IO.Pipelines.dasm - SR:Format(IFormatProvider,String,ref):String
33 ( 5.88% of base) : System.Net.Http.WinHttpHandler.dasm - SR:Format(IFormatProvider,String,ref):String
37 ( 5.84% of base) : xunit.execution.dotnet.dasm - TestMethodTestCase:get_BaseDisplayName():String:this
38 ( 5.79% of base) : System.Private.CoreLib.dasm - ObjectDisposedException:get_Message():String:this
31 ( 5.76% of base) : ILCompiler.Reflection.ReadyToRun.dasm - GcSlot:.ctor(int,String,int,int,int,int,int):this
15 ( 5.60% of base) : System.Net.Http.dasm - ContentDispositionHeaderValue:SetName(String,String):this
61 ( 5.54% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:PickPivotAndPartition(Span`1):int (5 methods)

Top method improvements (percentages):
-134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_16(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_2(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_9(String):String:this
-134 (-38.84% of base) : Newtonsoft.Json.dasm - <>c:b__4_0(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__4_0(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__24_1(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__24_4(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__25_1(String):String:this
-134 (-38.84% of base) : xunit.console.dasm - <>c:b__25_4(String):String:this
-134 (-38.84% of base) : System.Linq.Expressions.dasm - DebugViewWriter:QuoteName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - _Closure$__:_Lambda$__0-0(String):String:this
-126 (-35.69% of base) : xunit.runner.utility.netcoreapp10.dasm - <>c:b__32_0(String):String:this
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeAnonymousTypeBackingFieldName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeAnonymousTypeParameterName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeBackingFieldName(String):String
-126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeFixedFieldImplementationName(String):String
-126 (-35.69% of base) : xunit.console.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
-126 (-35.69% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
-126 (-35.69% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
-125 (-35.51% of base) : xunit.console.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
-125 (-35.51% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
-125 (-35.51% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
-125 (-35.51% of base) : xunit.console.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
-125 (-35.51% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
-125 (-35.51% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
-125 (-35.51% of base) : System.Private.Xml.dasm - ReflectionAwareILGen:GetStringForTypeof(String):String:this
-125 (-35.51% of base) : System.Private.Xml.dasm - XmlLoader:EntitizeName(String):String:this
-5 (-33.33% of base) : System.ComponentModel.Composition.dasm - <>c:b__14_0(MemberInfo):bool:this
-122 (-25.68% of base) : dotnet-Microsoft.XmlSerializer.Generator.dasm - Sgen:WriteHeader():this
-162 (-24.36% of base) : System.Net.Mail.dasm - MailAddress:get_SmtpAddress():String:this
-20 (-22.73% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:GreaterThan(byref,byref):bool (5 methods)
-20 (-22.73% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:GreaterThan(byref,byref):bool (5 methods)
-20 (-21.74% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:LessThan(byref,byref):bool (5 methods)
-20 (-21.74% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:LessThan(byref,byref):bool (5 methods)
-71 (-21.13% of base) : xunit.console.dasm - <>c:<.ctor>b__17_1(RuntimeFallbacks):String:this
-71 (-21.13% of base) : System.Speech.dasm - GrammarBuilderPhrase:get_DebugSummary():String:this
-71 (-21.13% of base) : System.Speech.dasm - SrgsText:DebuggerDisplayString():String:this
-71 (-20.23% of base) : Microsoft.Extensions.Configuration.Binder.dasm - <>c:b__15_2(IConfigurationSection):String:this
-5 (-18.52% of base) : System.ComponentModel.Composition.dasm - ReflectionProperty:get_CanRead():bool:this
-5 (-18.52% of base) : System.ComponentModel.Composition.dasm - ReflectionProperty:get_CanWrite():bool:this
-5 (-18.52% of base) : System.Private.CoreLib.dasm - RuntimePropertyInfo:get_CanRead():bool:this
-5 (-18.52% of base) : System.Private.CoreLib.dasm - RuntimePropertyInfo:get_CanWrite():bool:this
-61 (-17.78% of base) : Microsoft.CSharp.dasm - ComTypeLibDesc:ToString():String:this
-61 (-17.78% of base) : Microsoft.CSharp.dasm - DispCallable:ToString():String:this
-61 (-17.78% of base) : System.Drawing.Common.dasm - PrintDocument:ToString():String:this
-61 (-17.73% of base) : Microsoft.CSharp.dasm - ComTypeEnumDesc:ToString():String:this
-61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicConnectionHandle):String
-61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicListenerHandle):String
-61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicStreamHandle):String
-60 (-17.19% of base) : xunit.runner.utility.netcoreapp10.dasm - <>c:b__6_1(Type):String:this
-60 (-17.19% of base) : xunit.execution.dotnet.dasm - <>c:b__6_2(Type):String:this
-60 (-17.09% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:LambdaCopyParameterName(ParameterSymbol):String
-61 (-15.37% of base) : ILCompiler.TypeSystem.ReadyToRun.dasm - MethodSignature:GetIndexOfCustomModifierOnPointedAtTypeByParameterIndex(int):String
-62 (-14.87% of base) : System.Linq.Expressions.dasm - LoadCachedObjectInstruction:ToString():String:this
-73 (-14.78% of base) : System.Linq.Expressions.dasm - DebugViewWriter:DumpLabel(LabelTarget):this
-56 (-14.66% of base) : System.Private.Xml.dasm - XmlLoader:ExpandEntity(XmlEntity):this
-65 (-13.43% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - SynthesizedMyGroupCollectionPropertyAccessorSymbol:MakeSafeName(String):String
-56 (-13.43% of base) : xunit.console.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
-56 (-13.43% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
-56 (-13.43% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
-70 (-13.01% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForTypeof(String,bool):String:this
-474 (-12.96% of base) : Microsoft.CodeAnalysis.dasm - ImmutableSetWithInsertionOrder`1:ToString():String:this (8 methods)
-60 (-12.68% of base) : System.Web.HttpUtility.dasm - HttpUtility:JavaScriptStringEncode(String,bool):String
-5 (-12.50% of base) : System.Reflection.MetadataLoadContext.dasm - RoProperty:get_CanRead():bool:this
-5 (-12.20% of base) : System.Reflection.MetadataLoadContext.dasm - RoProperty:get_CanWrite():bool:this
-5 (-12.20% of base) : System.Private.CoreLib.dasm - StackFrameExtensions:HasMethod(StackFrame):bool
-30 (-11.11% of base) : System.Private.CoreLib.dasm - Exception:InternalPreserveStackTrace():this
-48 (-11.03% of base) : System.Net.Mail.dasm - SafeDeleteContext:ToString():String:this
-48 (-11.03% of base) : System.Net.Security.dasm - SafeDeleteContext:ToString():String:this
-48 (-11.03% of base) : System.Net.Http.dasm - SafeDeleteContext:ToString():String:this
-48 (-11.03% of base) : System.Net.HttpListener.dasm - SafeDeleteContext:ToString():String:this
-5 (-10.87% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - ReferenceManager:WeakIdentityPropertiesEquivalent(AssemblyIdentity,AssemblyIdentity):bool:this
-5 (-10.87% of base) : System.Reflection.Context.dasm - VirtualPropertyBase:get_CanRead():bool:this
-5 (-10.87% of base) : System.Reflection.Context.dasm - VirtualPropertyBase:get_CanWrite():bool:this
-4 (-10.53% of base) : System.Private.CoreLib.dasm - SortVersion:op_Equality(SortVersion,SortVersion):bool
-49 (-9.70% of base) : System.CodeDom.dasm - VBCodeGenerator:CreateEscapedIdentifier(String):String:this
-8 (-9.30% of base) : System.Private.CoreLib.dasm - DateTime:IsLeapYear(int):bool
-5 (-9.09% of base) : Newtonsoft.Json.dasm - JsonArrayContract:get_HasParameterizedCreatorInternal():bool:this
-5 (-9.09% of base) : Newtonsoft.Json.dasm - JsonDictionaryContract:get_HasParameterizedCreatorInternal():bool:this
-8 (-8.99% of base) : System.Private.CoreLib.dasm - Delegate:op_Inequality(Delegate,Delegate):bool
-5 (-8.47% of base) : System.Private.CoreLib.dasm - Version:TryParse(ReadOnlySpan`1,byref):bool
-4 (-8.16% of base) : System.Private.CoreLib.dasm - Version:op_Equality(Version,Version):bool
-179 (-7.11% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - MatcherContext:Match(DirectoryInfoBase,String):this
-40 (-6.94% of base) : System.Composition.Convention.dasm - MethodExpressionAdapter:VerifyMethodInfo(MethodInfo):bool:this (8 methods)
-40 (-6.94% of base) : System.Composition.Convention.dasm - PropertyExpressionAdapter:VerifyPropertyInfo(PropertyInfo):bool:this (8 methods)
-40 (-6.94% of base) : System.ComponentModel.Composition.Registration.dasm - PropertyExpressionAdapter:VerifyPropertyInfo(PropertyInfo):bool:this (8 methods)
-5 (-6.76% of base) : System.Private.CoreLib.dasm - Type:get_IsGenericMethodParameter():bool:this
-31 (-6.50% of base) : System.Diagnostics.DiagnosticSource.dasm - DiagnosticSourceEventSource:NewLineSeparate(String,String):String
-31 (-6.50% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - MatcherContext:CombinePath(String,String):String
-5 (-6.33% of base) : System.Private.Xml.dasm - SerializableMapping:.ctor(MethodInfo,bool,String):this
-29 (-6.26% of base) : System.Private.CoreLib.dasm - ManifestBasedResourceGroveler:GetNeutralResourcesLanguage(Assembly,byref):CultureInfo
-4 (-6.25% of base) : System.Private.CoreLib.dasm - Delegate:op_Equality(Delegate,Delegate):bool
-5 (-6.25% of base) : System.Private.CoreLib.dasm - ModuleHandle:Equals(ModuleHandle):bool:this
-5 (-5.95% of base) : System.Private.CoreLib.dasm - ModuleHandle:op_Equality(ModuleHandle,ModuleHandle):bool
-31 (-5.92% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - PatternContextLinear:CalculateStem(FileInfoBase):String:this
-31 (-5.89% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - PatternContextRagged:CalculateStem(FileInfoBase):String:this
-105 (-5.09% of base) : Microsoft.Extensions.DependencyInjection.dasm - CallSiteFactory:CreateConstructorCallSite(ResultCache,Type,Type,CallSiteChain):ServiceCallSite:this
-26 (-5.08% of base) : Microsoft.CodeAnalysis.dasm - MetadataTypeName:get_FullName():String:this
-5 (-5.05% of base) : System.Private.CoreLib.dasm - RuntimeTypeMetadataUpdateHandler:SkipAssembly(Assembly):bool
-3 (-4.92% of base) : System.Private.CoreLib.dasm - SortVersion:op_Inequality(SortVersion,SortVersion):bool

1667 total methods with Code Size differences (436 improved, 1231 regressed), 277338 unchanged.

</details>

I'm going to inspect the dasm

@huoyaoyuan
Copy link
Member Author

huoyaoyuan commented Dec 25, 2021

I'm confused by the results I'm getting. I'm comparing the first commit (IsNullOrEmpty change) only. The commits are 2f297c2b and c3dd830c.

Top method regressions (bytes):
         126 ( 3.02% of base) : System.Configuration.ConfigurationManager.dasm - MgmtConfigurationRecord:CopyConfigDefinitionsRecursive(ConfigDefinitionUpdates,XmlUtil,XmlUtilWriter,bool,LocationUpdates,SectionUpdates,bool,String,int,int):bool:this
          96 (10.25% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxFacts:GetText(int):String
          80 ( 0.43% of base) : FSharp.Core.dasm - Array2DModule:CopyTo(ref,int,int,ref,int,int,int,int) (8 methods)
          70 ( 4.33% of base) : System.Text.Json.dasm - DebugViewProperty:get_Display():String:this
          64 ( 0.89% of base) : System.Private.DataContractSerialization.dasm - DataNode`1:AddQualifiedNameAttribute(ElementData,String,String,String,String,String):this (8 methods)
          55 ( 2.51% of base) : System.Data.OleDb.dasm - OleDbConnectionString:ValidateConnectionString(String):String:this
          54 ( 9.87% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForEnumCompare(EnumMapping,String,bool):String:this
          53 (10.08% of base) : System.Reflection.Metadata.dasm - BlobBuilder:Display(ref,int):String
          53 (10.08% of base) : Microsoft.CodeAnalysis.dasm - BlobBuilder:Display(ref,int):String
          53 ( 2.68% of base) : System.Private.Xml.Linq.dasm - XNodeBuilder:WriteEntityRef(String):this
          53 ( 8.66% of base) : xunit.execution.dotnet.dasm - XunitSerializationInfo:SerializeTriple(XunitSerializationTriple):String
          53 ( 8.66% of base) : xunit.runner.utility.netcoreapp10.dasm - XunitSerializationInfo:SerializeTriple(XunitSerializationTriple):String
          51 ( 4.59% of base) : Microsoft.CodeAnalysis.CSharp.dasm - ModifierUtils:ConvertSingleModifierToSyntaxText(int):String
          49 ( 7.12% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForEnumMember(String,String,bool):String:this
          43 ( 6.97% of base) : System.CodeDom.dasm - VBCodeGenerator:GenerateEventReferenceExpression(CodeEventReferenceExpression):this
          41 ( 3.71% of base) : System.DirectoryServices.AccountManagement.dasm - ADStoreCtx:GetGroupDnFromGroupID(ref,int):String:this
          38 ( 6.29% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - <>c__DisplayClass84_0:<SetupCallbacks>b__2(SystemConfigCPUTraceData):this
          38 ( 5.79% of base) : System.Private.CoreLib.dasm - ObjectDisposedException:get_Message():String:this
          37 ( 5.84% of base) : xunit.execution.dotnet.dasm - TestMethodTestCase:get_BaseDisplayName():String:this
          37 ( 6.53% of base) : System.Private.Xml.dasm - XmlReader:get_Name():String:this
          36 ( 2.69% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForMember(String,String,TypeDesc):String:this
          35 ( 6.07% of base) : System.Private.DataContractSerialization.dasm - JsonDataContractCriticalHelper:.ctor(DataContract):this
          33 ( 1.51% of base) : xunit.execution.dotnet.dasm - <>c__DisplayClass6_0:<GetTypeNameForSerialization>g__GetTypeNameAsString|0(Type):String:this
          33 ( 5.20% of base) : xunit.runner.utility.netcoreapp10.dasm - AppDomainManager_NoAppDomain:CreateObject(AssemblyName,String,ref):__Canon:this
          33 ( 4.16% of base) : System.Net.Http.dasm - AuthenticationHelper:SetBasicAuthToken(HttpRequestMessage,NetworkCredential,bool)
          33 ( 6.29% of base) : System.Private.Xml.dasm - ContextInfo:.ctor(XsltInput):this
          33 ( 1.29% of base) : System.Management.dasm - ManagementClassGenerator:ProcessNamingCollisions():this
          33 ( 5.88% of base) : dotnet-Microsoft.XmlSerializer.Generator.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Binder.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Ini.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.UserSecrets.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.DependencyInjection.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Http.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Composition.TypedParts.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Configuration.ConfigurationManager.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.DirectoryServices.AccountManagement.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Windows.Extensions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Data.OleDb.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.DirectoryServices.Protocols.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.IO.Hashing.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.FileProviders.Physical.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Hosting.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Logging.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Primitives.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.CodeDom.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Diagnostics.EventLog.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.IO.Packaging.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.IO.Pipelines.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Memory.Data.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Reflection.Metadata.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Reflection.MetadataLoadContext.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Win32.Registry.AccessControl.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Win32.SystemEvents.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.ComponentModel.Composition.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Data.Odbc.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Diagnostics.PerformanceCounter.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Drawing.Common.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Net.Http.WinHttpHandler.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Numerics.Tensors.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Security.Cryptography.OpenSsl.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Security.Cryptography.Pkcs.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.ServiceModel.Syndication.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.ServiceProcess.ServiceController.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Threading.RateLimiting.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.ComponentModel.Composition.Registration.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Composition.Convention.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Composition.Hosting.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Composition.Runtime.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Private.DataContractSerialization.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Caching.Memory.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.CommandLine.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Xml.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.DependencyModel.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.FileProviders.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Logging.Configuration.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Logging.Console.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Options.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Collections.Immutable.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Resources.Extensions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Runtime.Caching.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Security.Cryptography.ProtectedData.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Security.Cryptography.Xml.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Security.Permissions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Threading.AccessControl.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Configuration.Json.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : Microsoft.Extensions.Logging.Abstractions.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Formats.Cbor.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.IO.Ports.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Management.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 5.88% of base) : System.Reflection.Context.dasm - SR:Format(IFormatProvider,String,ref):String
          33 ( 2.94% of base) : System.Private.Xml.dasm - XmlSerializationReader:ParseWsdlArrayType(XmlAttribute):this
          32 ( 5.06% of base) : System.Private.Xml.dasm - Accessor:ToString(String):String:this
          32 ( 4.16% of base) : System.Private.CoreLib.dasm - ActivityTracker:NormalizeActivityName(String,String,int):String
          32 ( 5.34% of base) : System.Net.Sockets.dasm - ExtendedSocketException:get_Message():String:this
          32 ( 0.95% of base) : FSharp.Core.dasm - FSharpOption`1:ToString():String:this (8 methods)

Top method improvements (bytes):
        -474 (-12.96% of base) : Microsoft.CodeAnalysis.dasm - ImmutableSetWithInsertionOrder`1:ToString():String:this (8 methods)
        -416 (-21.34% of base) : System.Private.CoreLib.dasm - PerCoreLockedStacks:TryPop():ref:this (8 methods)
        -404 (-17.84% of base) : System.Private.CoreLib.dasm - PerCoreLockedStacks:TryPush(ref):bool:this (8 methods)
        -400 (-7.33% of base) : System.Private.CoreLib.dasm - CancellationPromise`1:.ctor(Task,int,CancellationToken):this (8 methods)
        -385 (-4.50% of base) : System.Private.CoreLib.dasm - TlsOverPerCoreLockedStacksArrayPool`1:Rent(int):ref:this (10 methods)
        -336 (-4.27% of base) : System.Private.CoreLib.dasm - TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this (10 methods)
        -179 (-7.11% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - MatcherContext:Match(DirectoryInfoBase,String):this
        -162 (-24.36% of base) : System.Net.Mail.dasm - MailAddress:get_SmtpAddress():String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_16(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_2(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<.ctor>b__17_9(String):String:this
        -134 (-38.84% of base) : Newtonsoft.Json.dasm - <>c:<ExecuteFilter>b__4_0(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<GetDefaultProbeDirectories>b__4_0(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<ResolveManagedAssembly>b__24_1(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<ResolveManagedAssembly>b__24_4(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<ResolveUnmanagedLibrary>b__25_1(String):String:this
        -134 (-38.84% of base) : xunit.console.dasm - <>c:<ResolveUnmanagedLibrary>b__25_4(String):String:this
        -134 (-38.84% of base) : System.Linq.Expressions.dasm - DebugViewWriter:QuoteName(String):String
        -126 (-35.69% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - _Closure$__:_Lambda$__0-0(String):String:this
        -126 (-35.69% of base) : xunit.runner.utility.netcoreapp10.dasm - <>c:<GetExecutionAssemblyFileName>b__32_0(String):String:this
        -126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeAnonymousTypeBackingFieldName(String):String
        -126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeAnonymousTypeParameterName(String):String
        -126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeBackingFieldName(String):String
        -126 (-35.69% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:MakeFixedFieldImplementationName(String):String
        -126 (-35.69% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
        -126 (-35.69% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
        -126 (-35.69% of base) : xunit.console.dasm - JsonDeserializerResource:Format_UnrecognizedLiteral(String):String
        -125 (-35.51% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
        -125 (-35.51% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
        -125 (-35.51% of base) : xunit.console.dasm - JsonDeserializerResource:Format_InvalidUnicode(String):String
        -125 (-35.51% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
        -125 (-35.51% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
        -125 (-35.51% of base) : xunit.console.dasm - JsonDeserializerResource:Format_UnfinishedJSON(String):String
        -125 (-35.51% of base) : System.Private.Xml.dasm - ReflectionAwareILGen:GetStringForTypeof(String):String:this
        -125 (-35.51% of base) : System.Private.Xml.dasm - XmlLoader:EntitizeName(String):String:this
        -122 (-25.68% of base) : dotnet-Microsoft.XmlSerializer.Generator.dasm - Sgen:WriteHeader():this
        -100 (-10.28% of base) : System.Private.CoreLib.dasm - Timer:.ctor(TimerCallback,Object,int,int):this (2 methods)
         -73 (-14.78% of base) : System.Linq.Expressions.dasm - DebugViewWriter:DumpLabel(LabelTarget):this
         -71 (-21.13% of base) : xunit.console.dasm - <>c:<.ctor>b__17_1(RuntimeFallbacks):String:this
         -71 (-20.23% of base) : Microsoft.Extensions.Configuration.Binder.dasm - <>c:<BindNonScalar>b__15_2(IConfigurationSection):String:this
         -71 (-21.13% of base) : System.Speech.dasm - GrammarBuilderPhrase:get_DebugSummary():String:this
         -71 (-21.13% of base) : System.Speech.dasm - SrgsText:DebuggerDisplayString():String:this
         -70 (-13.01% of base) : System.Private.Xml.dasm - ReflectionAwareCodeGen:GetStringForTypeof(String,bool):String:this
         -65 (-13.43% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - SynthesizedMyGroupCollectionPropertyAccessorSymbol:MakeSafeName(String):String
         -62 (-14.87% of base) : System.Linq.Expressions.dasm - LoadCachedObjectInstruction:ToString():String:this
         -61 (-17.73% of base) : Microsoft.CSharp.dasm - ComTypeEnumDesc:ToString():String:this
         -61 (-17.78% of base) : Microsoft.CSharp.dasm - ComTypeLibDesc:ToString():String:this
         -61 (-17.78% of base) : Microsoft.CSharp.dasm - DispCallable:ToString():String:this
         -61 (-15.37% of base) : ILCompiler.TypeSystem.ReadyToRun.dasm - MethodSignature:GetIndexOfCustomModifierOnPointedAtTypeByParameterIndex(int):String
         -61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicConnectionHandle):String
         -61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicListenerHandle):String
         -61 (-17.58% of base) : System.Net.Quic.dasm - MsQuicTraceHelper:GetTraceId(SafeMsQuicStreamHandle):String
         -61 (-17.78% of base) : System.Drawing.Common.dasm - PrintDocument:ToString():String:this
         -61 (-92.42% of base) : System.Private.CoreLib.dasm - Thread:GetCurrentProcessorId():int
         -60 (-17.19% of base) : xunit.runner.utility.netcoreapp10.dasm - <>c:<GetTypeNameForSerialization>b__6_1(Type):String:this
         -60 (-17.19% of base) : xunit.execution.dotnet.dasm - <>c:<GetTypeNameForSerialization>b__6_2(Type):String:this
         -60 (-17.09% of base) : Microsoft.CodeAnalysis.CSharp.dasm - GeneratedNames:LambdaCopyParameterName(ParameterSymbol):String
         -60 (-12.68% of base) : System.Web.HttpUtility.dasm - HttpUtility:JavaScriptStringEncode(String,bool):String
         -56 (-13.43% of base) : xunit.runner.reporters.netcoreapp10.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
         -56 (-13.43% of base) : xunit.runner.utility.netcoreapp10.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
         -56 (-13.43% of base) : xunit.console.dasm - JsonDeserializerResource:Format_DuplicateObjectMemberName(String):String
         -56 (-14.66% of base) : System.Private.Xml.dasm - XmlLoader:ExpandEntity(XmlEntity):this
         -51 (-4.25% of base) : System.Net.Mail.dasm - SmtpClient:ValidateUnicodeRequirement(MailMessage,MailAddressCollection,bool):this
         -50 (-13.33% of base) : System.Private.CoreLib.dasm - CancellationTokenSource:CancelAfter(int):this (2 methods)
         -50 (-16.61% of base) : System.Private.CoreLib.dasm - CancellationTokenSource:InitializeWithTimer(int):this
         -50 (-11.93% of base) : System.Private.CoreLib.dasm - DelayPromise:.ctor(int):this
         -50 (-8.55% of base) : System.Private.CoreLib.dasm - PeriodicTimer:.ctor(TimeSpan):this
         -50 (-6.23% of base) : System.Private.CoreLib.dasm - Timer:.ctor(TimerCallback,Object,long,long):this
         -50 (-5.46% of base) : System.Private.CoreLib.dasm - Timer:.ctor(TimerCallback,Object,TimeSpan,TimeSpan):this
         -50 (-14.84% of base) : System.Private.CoreLib.dasm - Timer:.ctor(TimerCallback):this
         -50 (-20.58% of base) : System.Private.CoreLib.dasm - TimerQueueTimer:.ctor(TimerCallback,Object,int,int,bool):this
         -49 (-9.70% of base) : System.CodeDom.dasm - VBCodeGenerator:CreateEscapedIdentifier(String):String:this
         -48 (-11.03% of base) : System.Net.Http.dasm - SafeDeleteContext:ToString():String:this
         -48 (-11.03% of base) : System.Net.HttpListener.dasm - SafeDeleteContext:ToString():String:this
         -48 (-11.03% of base) : System.Net.Security.dasm - SafeDeleteContext:ToString():String:this
         -48 (-11.03% of base) : System.Net.Mail.dasm - SafeDeleteContext:ToString():String:this
         -42 (-1.97% of base) : System.ComponentModel.TypeConverter.dasm - RuntimeLicenseContext:GetSavedLicenseKey(Type,Assembly):String:this
         -39 (-4.01% of base) : Microsoft.CodeAnalysis.dasm - PdbMetadataWrapper:Microsoft.Cci.IMetaDataImport.GetTypeDefProps(int,long,int,byref,long):int:this
         -31 (-6.50% of base) : System.Diagnostics.DiagnosticSource.dasm - DiagnosticSourceEventSource:NewLineSeparate(String,String):String
         -31 (-1.72% of base) : System.Configuration.ConfigurationManager.dasm - InternalConfigRoot:GetConfigRecord(String):IInternalConfigRecord:this
         -31 (-6.50% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - MatcherContext:CombinePath(String,String):String
         -31 (-5.92% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - PatternContextLinear:CalculateStem(FileInfoBase):String:this
         -31 (-5.89% of base) : Microsoft.Extensions.FileSystemGlobbing.dasm - PatternContextRagged:CalculateStem(FileInfoBase):String:this
         -30 (-11.11% of base) : System.Private.CoreLib.dasm - Exception:InternalPreserveStackTrace():this
         -29 (-1.42% of base) : System.Net.Http.dasm - <CreateContentReadStreamAsyncCore>d__27:MoveNext():this
         -26 (-5.08% of base) : Microsoft.CodeAnalysis.dasm - MetadataTypeName:get_FullName():String:this
         -26 (-3.21% of base) : Microsoft.CodeAnalysis.dasm - PEModule:GetFullNameOrThrow(StringHandle,StringHandle):String:this
         -23 (-4.74% of base) : ILCompiler.TypeSystem.ReadyToRun.dasm - Format:Type(String,String):String
         -23 (-4.74% of base) : Microsoft.CodeAnalysis.dasm - MetadataHelpers:BuildQualifiedName(String,String):String
         -23 (-1.45% of base) : System.Configuration.ConfigurationManager.dasm - MgmtConfigurationRecord:WriteNewConfigDefinitionsRecursive(XmlUtilWriter,SectionUpdates,int,int,bool):bool:this
         -22 (-0.85% of base) : System.Private.Xml.dasm - XmlSerializationReaderCodeGen:WriteHashtable(EnumMapping,String):String:this
         -21 (-1.41% of base) : System.CodeDom.dasm - CodeTypeReference:Initialize(String,int):this
         -21 (-1.42% of base) : System.Private.DataContractSerialization.dasm - CodeTypeReference:Initialize(String,int):this
         -20 (-0.57% of base) : System.Private.Xml.dasm - XmlSerializationWriterCodeGen:WriteEnumAndArrayTypes():this
         -19 (-2.18% of base) : System.Data.Odbc.dasm - DbConnectionFactory:GetConnectionPoolGroup(DbConnectionPoolKey,DbConnectionPoolGroupOptions,byref):DbConnectionPoolGroup:this
         -18 (-0.74% of base) : System.Private.Xml.dasm - XmlSerializationReaderCodeGen:WriteEncodedStructMethod(StructMapping):this
         -18 (-1.69% of base) : System.Private.Xml.dasm - XmlSerializationWriterCodeGen:WriteArray(String,String,ref,TextAccessor,ChoiceIdentifierAccessor,TypeDesc):this
         -16 (-0.63% of base) : Microsoft.CodeAnalysis.CSharp.dasm - AnonymousTypeTemplateSymbol:.ctor(AnonymousTypeManager,AnonymousTypeDescriptor):this
         -15 (-1.26% of base) : Microsoft.Extensions.Http.dasm - <>c__DisplayClass3_0:<Configure>b__0(HttpMessageHandlerBuilder):this
         -15 (-0.48% of base) : System.Private.Xml.dasm - XslAstRewriter:Refactor(XslNode,int):this

@EgorBo There's a much larger influenced set than your result. I checked out them into 2 worktrees, and deleted the artifact directories to do a clean build.
The 33 bytes of regression in SR.Format looks really unrelated. It looks like an unnecessary null check causing more register used, and more push/pop in method prolog/epilog.
(I run jittools under net6.0 by changing runtime configuration. I don't expect it to cause difference.)

@EgorBo
Copy link
Member

EgorBo commented Dec 25, 2021

@huoyaoyuan can you replace --pmi with --crossgen C:\prj\runtime\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root\crossgen2\crossgen2.exe and try again? for both runs

@huoyaoyuan
Copy link
Member Author

OK with crossgen I'm getting much more reasonable result:

Top method regressions (bytes):
          14 ( 1.39% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetNFIValues(System.Globalization.NumberFormatInfo):this
          12 ( 3.88% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String
           9 ( 0.34% of base) : System.Private.CoreLib.dasm - <WriteToFileAsync>d__88:MoveNext():this
           8 ( 1.94% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String
           4 ( 1.93% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String):System.String
           3 ( 1.08% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
           3 ( 0.32% of base) : System.Private.CoreLib.dasm - System.OperatingSystem:get_VersionString():System.String:this
           2 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Enum:ToString(System.String):System.String:this
           2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:ConvertWin32GroupString(System.String):System.Int32[]
           2 ( 5.00% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_IsInvariantCulture():bool:this
           2 ( 0.33% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureData(System.String,bool):System.Globalization.CultureData
           2 ( 0.27% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureDataForRegion(System.String,bool):System.Globalization.CultureData
           2 ( 0.34% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:get_Parent():System.Globalization.CultureInfo:this
           2 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:Format(System.TimeSpan,System.String,System.IFormatProvider):System.String
           2 ( 0.21% of base) : System.Private.CoreLib.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding)
           2 ( 1.16% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String
           2 ( 2.63% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):bool
           2 ( 0.98% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EqualStartingCharacterCount(System.String,System.String,bool):int
           2 ( 0.41% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String
           2 ( 0.40% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFromResolveHandler(System.Object,System.ResolveEventArgs):System.Reflection.Assembly
           2 ( 1.18% of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyName:get_FullName():System.String:this
           2 ( 0.64% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:CheckParameterMetadataType(System.Reflection.ParameterInfo,System.Reflection.NullabilityInfo):this
           2 ( 0.37% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetFailureMessage(int,System.String):System.String
           2 ( 0.24% of base) : System.Private.CoreLib.dasm - System.Runtime.Versioning.FrameworkName:get_FullName():System.String:this
           2 ( 1.36% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String):System.String
           2 (10.00% of base) : System.Private.CoreLib.dasm - System.String:IsNullOrEmpty(System.String):bool
           1 ( 0.18% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String,System.IO.TextWriter)
           1 ( 0.27% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String):System.String
           1 ( 0.29% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncode(System.String):System.String

Top method improvements (bytes):
          -5 (-0.90% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String,System.IO.TextWriter)
          -2 (-0.24% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:InsertHash(System.Globalization.DateTimeFormatInfo+TokenHashValue[],System.String,int,int):this
          -1 (-0.27% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String):System.String
          -1 (-0.14% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ModuleBuilder:GetTypeNoLock(System.String,bool,bool):System.Type:this

@huoyaoyuan
Copy link
Member Author

@EgorBo could you help me to analyze the change? When I try to analyze impact of the second commit, the result shows a lot of ∞ of base and -100.00% of base, looks like 2 commits between very long history.

@EgorBo
Copy link
Member

EgorBo commented Jan 17, 2022

@huoyaoyuan sorry for the delay, ∞ of base means that a method was not jitted (existed) in the baseline.
As for this PR we still need ? true : false for better codegen, I hit it in my pr #63734 (comment)

From my understanding we need #63720 to check in and, potentially, one more PR to basically convert return x !=0 to if (x != 0) return true; return false in JIT in early phases and then folding it back to return x!=0; if needed

@EgorBo
Copy link
Member

EgorBo commented Mar 29, 2022

Which command does -f apply to? The jit-analyze.exe compiled from jit-tools doesn't accept -f. I can see the dasm of other libs are present in the dasm folder.

See https://gist.github.com/EgorBo/a72bfa70f08a4d890241037c0fc1fb93, replace --corelib with -f

@huoyaoyuan
Copy link
Member Author

I used the method from your previous comment:

jit-diff diff --output C:\prj\jit-diffs -f --core_root C:\prj\runtime-base\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root --base C:\prj\runtime-base\artifacts\bin\coreclr\windows.x64.Checked --pmi

jit-diff diff --output C:\prj\jit-diffs -f --core_root C:\prj\runtime-pr\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root --base C:\prj\runtime-pr\artifacts\bin\coreclr\windows.x64.Checked --pmi

jit-analyze.bat -b C:\prj\jit-diffs\dasmset_1\base -d C:\prj\jit-diffs\dasmset_2\base -r -c 100
# NOTE: each run jit-diff creates new dasmset_X 

-f is already used and therefore dasm for libs are present.

@EgorBo
Copy link
Member

EgorBo commented Mar 29, 2022

I used the method from your previous comment:

jit-diff diff --output C:\prj\jit-diffs -f --core_root C:\prj\runtime-base\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root --base C:\prj\runtime-base\artifacts\bin\coreclr\windows.x64.Checked --pmi

jit-diff diff --output C:\prj\jit-diffs -f --core_root C:\prj\runtime-pr\artifacts\tests\coreclr\windows.x64.Release\Tests\Core_Root --base C:\prj\runtime-pr\artifacts\bin\coreclr\windows.x64.Checked --pmi

jit-analyze.bat -b C:\prj\jit-diffs\dasmset_1\base -d C:\prj\jit-diffs\dasmset_2\base -r -c 100
# NOTE: each run jit-diff creates new dasmset_X 

-f is already used and therefore dasm for libs are present.

so what is the diff for you changes from those steps?

@EgorBo
Copy link
Member

EgorBo commented Mar 29, 2022

I ran it locally for only IsNullOrEmpty part and it was way more verbose than what you posted previously

@huoyaoyuan
Copy link
Member Author

The result is already with -f. I used --crossgen instead of --pmi.

@EgorBo
Copy link
Member

EgorBo commented Mar 30, 2022

The result is already with -f. I used --crossgen instead of --pmi.

can you paste the results, full report with the header how many improved/regressed - I'm pretty sure #63095 (comment) it's not -f. it only contains corelib

@huoyaoyuan
Copy link
Member Author

Here is the full command and result:

PS D:\Code\dotnet\jitutils\bin> .\jit-analyze.exe -b D:\Code\dotnet\jitdiff\dasmset_1\base\ -d D:\Code\dotnet\jitdiff\dasmset_3\base\ -c 100 Found 273 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 37323903
Total bytes of diff: 37324055
Total bytes of delta: 152 (0.00 % of base)
Total relative delta: NaN
diff is a regression.
relative diff is a regression.

Top file regressions (bytes):
152 : System.Private.CoreLib.dasm (0.00% of base)

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

Top method regressions (bytes):
253 (26.38% of base) : System.Private.CoreLib.dasm - System.TypedReference:MakeTypedReference(System.Object,System.Reflection.FieldInfo[]):System.TypedReference
22 ( 3.98% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt32HexNumberStyle(System.ReadOnlySpan1[System.Char],int,byref):int 17 ( 3.02% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt64HexNumberStyle(System.ReadOnlySpan1[System.Char],int,byref):int
14 ( 1.39% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetNFIValues(System.Globalization.NumberFormatInfo):this
14 ( 4.31% of base) : System.Private.CoreLib.dasm - System.Globalization.Ordinal:EqualsIgnoreCase(byref,byref,int):bool
12 ( 3.88% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String
11 ( 1.24% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt64IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int 8 ( 1.55% of base) : System.Private.CoreLib.dasm - MemberInfoCache1:Insert(byref,System.String,int):this
8 ( 1.94% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String
8 ( 2.29% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicMethod:GetDynamicMethodsModule():System.Reflection.RuntimeModule
8 ( 6.61% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicResolver:Finalize():this
7 ( 0.27% of base) : System.Private.CoreLib.dasm - d__88:MoveNext():this
6 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Number:TryParseInt32IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int 5 ( 0.53% of base) : System.Private.CoreLib.dasm - System.Number:TryParseInt64IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int
4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Delegate:CreateDelegate(System.Type,System.Object,System.Reflection.MethodInfo,bool):System.Delegate
4 ( 0.46% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt32IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int 4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ILGenerator:EmitWriteLine(System.Reflection.Emit.LocalBuilder):this 4 ( 1.24% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ILGenerator:ThrowException(System.Type):this 4 ( 0.74% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:GetNullableContext(System.Reflection.MemberInfo):System.Nullable1[System.Reflection.NullabilityState]:this
4 ( 1.93% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String):System.String
3 ( 1.84% of base) : System.Private.CoreLib.dasm - System.Attribute:InternalIsDefined(System.Reflection.EventInfo,System.Type,bool):bool
3 ( 1.66% of base) : System.Private.CoreLib.dasm - System.Attribute:InternalIsDefined(System.Reflection.PropertyInfo,System.Type,bool):bool
3 ( 1.08% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
3 ( 0.33% of base) : System.Private.CoreLib.dasm - System.OperatingSystem:get_VersionString():System.String:this
2 ( 2.38% of base) : System.Private.CoreLib.dasm - System.Delegate:RemoveAll(System.Delegate,System.Delegate):System.Delegate
2 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Enum:ToString(System.String):System.String:this
2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:ConvertWin32GroupString(System.String):System.Int32[]
2 ( 5.00% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_IsInvariantCulture():bool:this
2 ( 0.33% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureData(System.String,bool):System.Globalization.CultureData
2 ( 0.28% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureDataForRegion(System.String,bool):System.Globalization.CultureData
2 ( 0.34% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:get_Parent():System.Globalization.CultureInfo:this
2 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:Format(System.TimeSpan,System.String,System.IFormatProvider):System.String
2 ( 0.21% of base) : System.Private.CoreLib.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding)
2 ( 1.16% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String
2 ( 2.63% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):bool
2 ( 0.98% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EqualStartingCharacterCount(System.String,System.String,bool):int
2 ( 0.41% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String
2 ( 9.09% of base) : System.Private.CoreLib.dasm - System.Number:IsWhite(int):bool
2 ( 0.40% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFromResolveHandler(System.Object,System.ResolveEventArgs):System.Reflection.Assembly
2 ( 1.17% of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyName:get_FullName():System.String:this
2 ( 0.61% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:CheckParameterMetadataType(System.Reflection.ParameterInfo,System.Reflection.NullabilityInfo):this
2 ( 0.37% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetFailureMessage(int,System.String):System.String
2 ( 0.24% of base) : System.Private.CoreLib.dasm - System.Runtime.Versioning.FrameworkName:get_FullName():System.String:this
2 ( 1.36% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String):System.String
2 (10.00% of base) : System.Private.CoreLib.dasm - System.String:IsNullOrEmpty(System.String):bool
1 ( 0.20% of base) : System.Private.CoreLib.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo
1 ( 0.09% of base) : System.Private.CoreLib.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,bool,System.Exception):this
1 ( 0.19% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String,System.IO.TextWriter)
1 ( 0.27% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String):System.String
1 ( 0.29% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncode(System.String):System.String
1 ( 0.32% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this
1 ( 0.32% of base) : System.Private.CoreLib.dasm - System.RuntimeType:GetEvent(System.String,int):System.Reflection.EventInfo:this
1 ( 0.16% of base) : System.Private.CoreLib.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this

Top method improvements (bytes):
-43 (-5.37% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this
-22 (-0.50% of base) : System.Private.CoreLib.dasm - System.RuntimeType:InvokeMember(System.String,int,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]):System.Object:this
-19 (-5.60% of base) : System.Private.CoreLib.dasm - System.ComponentModel.DefaultValueAttribute:<.ctor>g__TryConvertFromInvariantString|2_0(System.Type,System.String,byref):bool
-15 (-25.42% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.GenericArraySortHelper1:LessThan(byref,byref):bool -15 (-3.68% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this -10 (-16.95% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.GenericArraySortHelper1:GreaterThan(byref,byref):bool
-10 (-2.60% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.ConstructorInfo):this
-10 (-2.32% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly
-8 (-9.20% of base) : System.Private.CoreLib.dasm - System.DateTime:IsLeapYear(int):bool
-8 (-10.13% of base) : System.Private.CoreLib.dasm - System.Delegate:op_Inequality(System.Delegate,System.Delegate):bool
-8 (-10.67% of base) : System.Private.CoreLib.dasm - System.MulticastDelegate:op_Inequality(System.MulticastDelegate,System.MulticastDelegate):bool
-8 (-1.17% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this
-7 (-1.65% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeAssembly:InternalGetSatelliteAssembly(System.Globalization.CultureInfo,System.Version,bool):System.Reflection.Assembly:this
-5 (-11.63% of base) : System.Private.CoreLib.dasm - System.Diagnostics.StackFrameExtensions:HasMethod(System.Diagnostics.StackFrame):bool
-5 (-2.81% of base) : System.Private.CoreLib.dasm - System.Globalization.GregorianCalendar:IsLeapYear(int,int):bool:this
-5 (-7.58% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:Equals(System.ModuleHandle):bool:this
-5 (-3.76% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:Equals(System.Object):bool:this
-5 (-7.14% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:op_Equality(System.ModuleHandle,System.ModuleHandle):bool
-5 (-0.93% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String,System.IO.TextWriter)
-5 (-3.82% of base) : System.Private.CoreLib.dasm - System.Reflection.MdFieldInfo:CacheEquals(System.Object):bool:this
-5 (-5.05% of base) : System.Private.CoreLib.dasm - System.Reflection.Metadata.RuntimeTypeMetadataUpdateHandler:SkipAssembly(System.Reflection.Assembly):bool
-5 (-20.00% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimePropertyInfo:get_CanRead():bool:this
-5 (-20.00% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimePropertyInfo:get_CanWrite():bool:this
-5 (-6.58% of base) : System.Private.CoreLib.dasm - System.Type:get_IsGenericMethodParameter():bool:this
-5 (-1.51% of base) : System.Private.CoreLib.dasm - System.TypeNameParser:ResolveAssembly(System.String,System.Func2[System.Reflection.AssemblyName, System.Reflection.Assembly],bool,byref):System.Reflection.Assembly -5 (-8.20% of base) : System.Private.CoreLib.dasm - System.Version:TryParse(System.ReadOnlySpan1[System.Char],byref):bool
-5 (-4.72% of base) : System.Private.CoreLib.dasm - System.Version:TryParse(System.String,byref):bool
-4 (-0.69% of base) : System.Private.CoreLib.dasm - Internal.Runtime.InteropServices.ComponentActivator:InternalGetFunctionPointer(System.Runtime.Loader.AssemblyLoadContext,System.String,System.String,long):long
-4 (-7.55% of base) : System.Private.CoreLib.dasm - System.Delegate:op_Equality(System.Delegate,System.Delegate):bool
-4 (-9.52% of base) : System.Private.CoreLib.dasm - System.Globalization.SortVersion:op_Equality(System.Globalization.SortVersion,System.Globalization.SortVersion):bool
-4 (-7.55% of base) : System.Private.CoreLib.dasm - System.MulticastDelegate:op_Equality(System.MulticastDelegate,System.MulticastDelegate):bool
-4 (-7.55% of base) : System.Private.CoreLib.dasm - System.Version:op_Equality(System.Version,System.Version):bool
-3 (-4.92% of base) : System.Private.CoreLib.dasm - System.Globalization.SortVersion:op_Inequality(System.Globalization.SortVersion,System.Globalization.SortVersion):bool
-3 (-3.66% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:op_Inequality(System.ModuleHandle,System.ModuleHandle):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:op_Inequality(System.Reflection.Assembly,System.Reflection.Assembly):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.ConstructorInfo:op_Inequality(System.Reflection.ConstructorInfo,System.Reflection.ConstructorInfo):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.EventInfo:op_Inequality(System.Reflection.EventInfo,System.Reflection.EventInfo):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.FieldInfo:op_Inequality(System.Reflection.FieldInfo,System.Reflection.FieldInfo):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.MemberInfo:op_Inequality(System.Reflection.MemberInfo,System.Reflection.MemberInfo):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:op_Inequality(System.Reflection.MethodBase,System.Reflection.MethodBase):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodInfo:op_Inequality(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.Module:op_Inequality(System.Reflection.Module,System.Reflection.Module):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.PropertyInfo:op_Inequality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo):bool
-3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Version:op_Inequality(System.Version,System.Version):bool
-2 (-0.24% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:InsertHash(System.Globalization.DateTimeFormatInfo+TokenHashValue[],System.String,int,int):this
-2 (-0.66% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.AssemblyBuilder:CheckContext(System.Type[])
-2 (-1.17% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:LoadUnmanagedDllFromPath(System.String):long:this
-1 (-0.27% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String):System.String
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:op_Equality(System.Reflection.Assembly,System.Reflection.Assembly):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.ConstructorInfo:op_Equality(System.Reflection.ConstructorInfo,System.Reflection.ConstructorInfo):bool
-1 (-0.15% of base) : System.Private.CoreLib.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,bool):System.Object[]
-1 (-0.14% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ModuleBuilder:GetTypeNoLock(System.String,bool,bool):System.Type:this
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.EventInfo:op_Equality(System.Reflection.EventInfo,System.Reflection.EventInfo):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.FieldInfo:op_Equality(System.Reflection.FieldInfo,System.Reflection.FieldInfo):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.MemberInfo:op_Equality(System.Reflection.MemberInfo,System.Reflection.MemberInfo):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:op_Equality(System.Reflection.MethodBase,System.Reflection.MethodBase):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodInfo:op_Equality(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.Module:op_Equality(System.Reflection.Module,System.Reflection.Module):bool
-1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.PropertyInfo:op_Equality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo):bool

Top method regressions (percentages):
253 (26.38% of base) : System.Private.CoreLib.dasm - System.TypedReference:MakeTypedReference(System.Object,System.Reflection.FieldInfo[]):System.TypedReference
2 (10.00% of base) : System.Private.CoreLib.dasm - System.String:IsNullOrEmpty(System.String):bool
2 ( 9.09% of base) : System.Private.CoreLib.dasm - System.Number:IsWhite(int):bool
8 ( 6.61% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicResolver:Finalize():this
2 ( 5.00% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:get_IsInvariantCulture():bool:this
14 ( 4.31% of base) : System.Private.CoreLib.dasm - System.Globalization.Ordinal:EqualsIgnoreCase(byref,byref,int):bool
22 ( 3.98% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt32HexNumberStyle(System.ReadOnlySpan1[System.Char],int,byref):int 12 ( 3.88% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String 17 ( 3.02% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt64HexNumberStyle(System.ReadOnlySpan1[System.Char],int,byref):int
2 ( 2.63% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):bool
2 ( 2.38% of base) : System.Private.CoreLib.dasm - System.Delegate:RemoveAll(System.Delegate,System.Delegate):System.Delegate
8 ( 2.29% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicMethod:GetDynamicMethodsModule():System.Reflection.RuntimeModule
8 ( 1.94% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String
4 ( 1.93% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String,System.String):System.String
3 ( 1.84% of base) : System.Private.CoreLib.dasm - System.Attribute:InternalIsDefined(System.Reflection.EventInfo,System.Type,bool):bool
3 ( 1.66% of base) : System.Private.CoreLib.dasm - System.Attribute:InternalIsDefined(System.Reflection.PropertyInfo,System.Type,bool):bool
8 ( 1.55% of base) : System.Private.CoreLib.dasm - MemberInfoCache1:Insert(byref,System.String,int):this 14 ( 1.39% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetNFIValues(System.Globalization.NumberFormatInfo):this 2 ( 1.36% of base) : System.Private.CoreLib.dasm - System.String:Concat(System.String,System.String):System.String 4 ( 1.24% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ILGenerator:ThrowException(System.Type):this 11 ( 1.24% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt64IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int
2 ( 1.17% of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyName:get_FullName():System.String:this
2 ( 1.16% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String
3 ( 1.08% of base) : System.Private.CoreLib.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
2 ( 0.98% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:EqualStartingCharacterCount(System.String,System.String,bool):int
4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ILGenerator:EmitWriteLine(System.Reflection.Emit.LocalBuilder):this
4 ( 0.88% of base) : System.Private.CoreLib.dasm - System.Delegate:CreateDelegate(System.Type,System.Object,System.Reflection.MethodInfo,bool):System.Delegate
2 ( 0.82% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:ConvertWin32GroupString(System.String):System.Int32[]
4 ( 0.74% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:GetNullableContext(System.Reflection.MemberInfo):System.Nullable1[System.Reflection.NullabilityState]:this 2 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanFormat:Format(System.TimeSpan,System.String,System.IFormatProvider):System.String 6 ( 0.66% of base) : System.Private.CoreLib.dasm - System.Number:TryParseInt32IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int
2 ( 0.61% of base) : System.Private.CoreLib.dasm - System.Reflection.NullabilityInfoContext:CheckParameterMetadataType(System.Reflection.ParameterInfo,System.Reflection.NullabilityInfo):this
2 ( 0.58% of base) : System.Private.CoreLib.dasm - System.Enum:ToString(System.String):System.String:this
5 ( 0.53% of base) : System.Private.CoreLib.dasm - System.Number:TryParseInt64IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int 4 ( 0.46% of base) : System.Private.CoreLib.dasm - System.Number:TryParseUInt32IntegerStyle(System.ReadOnlySpan1[System.Char],int,System.Globalization.NumberFormatInfo,byref):int
2 ( 0.41% of base) : System.Private.CoreLib.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String
2 ( 0.40% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:LoadFromResolveHandler(System.Object,System.ResolveEventArgs):System.Reflection.Assembly
2 ( 0.37% of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ContractHelper:GetFailureMessage(int,System.String):System.String
2 ( 0.34% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureInfo:get_Parent():System.Globalization.CultureInfo:this
2 ( 0.33% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureData(System.String,bool):System.Globalization.CultureData
3 ( 0.33% of base) : System.Private.CoreLib.dasm - System.OperatingSystem:get_VersionString():System.String:this
1 ( 0.32% of base) : System.Private.CoreLib.dasm - System.RuntimeType:GetEvent(System.String,int):System.Reflection.EventInfo:this
1 ( 0.32% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.FieldInfo):this
1 ( 0.29% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncode(System.String):System.String
2 ( 0.28% of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:GetCultureDataForRegion(System.String,bool):System.Globalization.CultureData
1 ( 0.27% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String):System.String
7 ( 0.27% of base) : System.Private.CoreLib.dasm - d__88:MoveNext():this
2 ( 0.24% of base) : System.Private.CoreLib.dasm - System.Runtime.Versioning.FrameworkName:get_FullName():System.String:this
2 ( 0.21% of base) : System.Private.CoreLib.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding)
1 ( 0.20% of base) : System.Private.CoreLib.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo
1 ( 0.19% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlDecode(System.String,System.IO.TextWriter)
1 ( 0.16% of base) : System.Private.CoreLib.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this
1 ( 0.09% of base) : System.Private.CoreLib.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,bool,System.Exception):this

Top method improvements (percentages):
-15 (-25.42% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.GenericArraySortHelper1:LessThan(byref,byref):bool -5 (-20.00% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimePropertyInfo:get_CanRead():bool:this -5 (-20.00% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimePropertyInfo:get_CanWrite():bool:this -10 (-16.95% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.GenericArraySortHelper1:GreaterThan(byref,byref):bool
-5 (-11.63% of base) : System.Private.CoreLib.dasm - System.Diagnostics.StackFrameExtensions:HasMethod(System.Diagnostics.StackFrame):bool
-8 (-10.67% of base) : System.Private.CoreLib.dasm - System.MulticastDelegate:op_Inequality(System.MulticastDelegate,System.MulticastDelegate):bool
-8 (-10.13% of base) : System.Private.CoreLib.dasm - System.Delegate:op_Inequality(System.Delegate,System.Delegate):bool
-4 (-9.52% of base) : System.Private.CoreLib.dasm - System.Globalization.SortVersion:op_Equality(System.Globalization.SortVersion,System.Globalization.SortVersion):bool
-8 (-9.20% of base) : System.Private.CoreLib.dasm - System.DateTime:IsLeapYear(int):bool
-5 (-8.20% of base) : System.Private.CoreLib.dasm - System.Version:TryParse(System.ReadOnlySpan1[System.Char],byref):bool -5 (-7.58% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:Equals(System.ModuleHandle):bool:this -4 (-7.55% of base) : System.Private.CoreLib.dasm - System.Delegate:op_Equality(System.Delegate,System.Delegate):bool -4 (-7.55% of base) : System.Private.CoreLib.dasm - System.MulticastDelegate:op_Equality(System.MulticastDelegate,System.MulticastDelegate):bool -4 (-7.55% of base) : System.Private.CoreLib.dasm - System.Version:op_Equality(System.Version,System.Version):bool -5 (-7.14% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:op_Equality(System.ModuleHandle,System.ModuleHandle):bool -5 (-6.58% of base) : System.Private.CoreLib.dasm - System.Type:get_IsGenericMethodParameter():bool:this -19 (-5.60% of base) : System.Private.CoreLib.dasm - System.ComponentModel.DefaultValueAttribute:<.ctor>g__TryConvertFromInvariantString|2_0(System.Type,System.String,byref):bool -43 (-5.37% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.MethodInfo):this -5 (-5.05% of base) : System.Private.CoreLib.dasm - System.Reflection.Metadata.RuntimeTypeMetadataUpdateHandler:SkipAssembly(System.Reflection.Assembly):bool -3 (-4.92% of base) : System.Private.CoreLib.dasm - System.Globalization.SortVersion:op_Inequality(System.Globalization.SortVersion,System.Globalization.SortVersion):bool -5 (-4.72% of base) : System.Private.CoreLib.dasm - System.Version:TryParse(System.String,byref):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:op_Inequality(System.Reflection.Assembly,System.Reflection.Assembly):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.ConstructorInfo:op_Inequality(System.Reflection.ConstructorInfo,System.Reflection.ConstructorInfo):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.EventInfo:op_Inequality(System.Reflection.EventInfo,System.Reflection.EventInfo):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.FieldInfo:op_Inequality(System.Reflection.FieldInfo,System.Reflection.FieldInfo):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.MemberInfo:op_Inequality(System.Reflection.MemberInfo,System.Reflection.MemberInfo):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:op_Inequality(System.Reflection.MethodBase,System.Reflection.MethodBase):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodInfo:op_Inequality(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.Module:op_Inequality(System.Reflection.Module,System.Reflection.Module):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Reflection.PropertyInfo:op_Inequality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo):bool -3 (-4.11% of base) : System.Private.CoreLib.dasm - System.Version:op_Inequality(System.Version,System.Version):bool -5 (-3.82% of base) : System.Private.CoreLib.dasm - System.Reflection.MdFieldInfo:CacheEquals(System.Object):bool:this -5 (-3.76% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:Equals(System.Object):bool:this -15 (-3.68% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this -3 (-3.66% of base) : System.Private.CoreLib.dasm - System.ModuleHandle:op_Inequality(System.ModuleHandle,System.ModuleHandle):bool -5 (-2.81% of base) : System.Private.CoreLib.dasm - System.Globalization.GregorianCalendar:IsLeapYear(int,int):bool:this -10 (-2.60% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.ConstructorInfo):this -10 (-2.32% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.Assembly:op_Equality(System.Reflection.Assembly,System.Reflection.Assembly):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.ConstructorInfo:op_Equality(System.Reflection.ConstructorInfo,System.Reflection.ConstructorInfo):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.EventInfo:op_Equality(System.Reflection.EventInfo,System.Reflection.EventInfo):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.FieldInfo:op_Equality(System.Reflection.FieldInfo,System.Reflection.FieldInfo):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.MemberInfo:op_Equality(System.Reflection.MemberInfo,System.Reflection.MemberInfo):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:op_Equality(System.Reflection.MethodBase,System.Reflection.MethodBase):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.MethodInfo:op_Equality(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.Module:op_Equality(System.Reflection.Module,System.Reflection.Module):bool -1 (-2.22% of base) : System.Private.CoreLib.dasm - System.Reflection.PropertyInfo:op_Equality(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo):bool -7 (-1.65% of base) : System.Private.CoreLib.dasm - System.Reflection.RuntimeAssembly:InternalGetSatelliteAssembly(System.Globalization.CultureInfo,System.Version,bool):System.Reflection.Assembly:this -5 (-1.51% of base) : System.Private.CoreLib.dasm - System.TypeNameParser:ResolveAssembly(System.String,System.Func2[System.Reflection.AssemblyName, System.Reflection.Assembly],bool,byref):System.Reflection.Assembly
-8 (-1.17% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this
-2 (-1.17% of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:LoadUnmanagedDllFromPath(System.String):long:this
-5 (-0.93% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String,System.IO.TextWriter)
-4 (-0.69% of base) : System.Private.CoreLib.dasm - Internal.Runtime.InteropServices.ComponentActivator:InternalGetFunctionPointer(System.Runtime.Loader.AssemblyLoadContext,System.String,System.String,long):long
-2 (-0.66% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.AssemblyBuilder:CheckContext(System.Type[])
-22 (-0.50% of base) : System.Private.CoreLib.dasm - System.RuntimeType:InvokeMember(System.String,int,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]):System.Object:this
-1 (-0.27% of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:HtmlEncode(System.String):System.String
-2 (-0.24% of base) : System.Private.CoreLib.dasm - System.Globalization.DateTimeFormatInfo:InsertHash(System.Globalization.DateTimeFormatInfo+TokenHashValue[],System.String,int,int):this
-1 (-0.15% of base) : System.Private.CoreLib.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,bool):System.Object[]
-1 (-0.14% of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.ModuleBuilder:GetTypeNoLock(System.String,bool,bool):System.Type:this

112 total methods with Code Size differences (59 improved, 53 regressed), 254791 unchanged.


@EgorBo
Copy link
Member

EgorBo commented Mar 30, 2022

Thanks, lgtm, let's wait for a green CI

@huoyaoyuan
Copy link
Member Author

@EgorBo CI is green now. Does it require another person to merge this?

if (typeof(T) == typeof(double)) return (double)(object)left < (double)(object)right ? true : false;
if (typeof(T) == typeof(Half)) return (Half)(object)left < (Half)(object)right ? true : false;
return left.CompareTo(right) < 0 ? true : false;
if (typeof(T) == typeof(byte)) return (byte)(object)left < (byte)(object)right;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why these if’s and not using switch expressions for these in this file?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The IL patterns of typeof(T) == constant and (the same type)(object)value are specially recognized by JIT and will be reduced to a nop. Other patterns are harder to analysis.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, typeof() isn't a constant value and can't be used in a switch statement/expression.

@AraHaan
Copy link
Member

AraHaan commented Apr 24, 2022

Also note: With rider you can have the cursor in the method for which you want it to give the JIT asm on and works even without compiling.

If only Visual Studio had something similar built in as an tab one can click on to view it the same way as well.

@huoyaoyuan
Copy link
Member Author

https://github.com/EgorBo/Disasmo is useful.
Things are dramatically complex when working with the runtime it self. You are required to deal with change of JIT and/or BCL. It's often necessary to compare results of tiered compilation and inlining.
Rider is often not compatible with latest language features (at least when I was using it), which are used aggressively in BCL.

return d1 is null;
}

return ReferenceEquals(d2, d1) ? true : d2.Equals((object?)d1);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return ReferenceEquals(d2, d1) ? true : d2.Equals((object?)d1);
return ReferenceEquals(d2, d1) || d2.Equals((object?)d1);

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is quite a similar pattern to the one addressed by this PR. It's better to confirm there's no codegen regression separately.

return d1 is not null;
}

return ReferenceEquals(d2, d1) ? false : !d2.Equals(d1);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return ReferenceEquals(d2, d1) ? false : !d2.Equals(d1);
return !ReferenceEquals(d2, d1) && !d2.Equals(d1);

@EgorBo
Copy link
Member

EgorBo commented Jun 6, 2022

@huoyaoyuan thanks!

@AndyAyersMS
Copy link
Member

Possible regression on x86: #63095

@huoyaoyuan
Copy link
Member Author

So the issue may not be fully fixed for all platforms. Ah.

@ghost ghost locked as resolved and limited conversation to collaborators Jul 11, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RyuJIT generates redundant code when inlining string.IsNullOrEmpty

10 participants