Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove ternary workaround for string.IsNullOrEmpty #63095

Merged
merged 8 commits into from
Jun 6, 2022

Conversation

huoyaoyuan
Copy link
Member

Closes #4207

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

@dotnet-issue-labeler
Copy link

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.

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool operator ==(MulticastDelegate? d1, MulticastDelegate? d2)
{
// Test d2 first to allow branch elimination when inlined for null checks (== null)
// so it can become a simple test
if (d2 is null)
{
// return true/false not the test result https://github.com/dotnet/runtime/issues/4207
return (d1 is null) ? true : false;
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.

@@ -453,8 +450,7 @@ public sealed override Delegate[] GetInvocationList()
// so it can become a simple test
if (d2 is null)
{
// return true/false not the test result https://github.com/dotnet/runtime/issues/4207
return (d1 is null) ? false : true;
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