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

Cloning improvements #66257

Merged
merged 3 commits into from
Mar 21, 2022
Merged

Conversation

BruceForstall
Copy link
Member

@BruceForstall BruceForstall commented Mar 6, 2022

Remove loop cloning variable initialization condition:
Assume that any pre-existing initialization is acceptable.
Check condition against zero if necessary. Const inits remain as before.

Lots of diffs due to more cloning for cases of for (i = expression...
where expression is not just a constant or local var.

Also, fix various comments that were no longer correct (e.g., "first" block
concept is gone)

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Mar 6, 2022
@ghost ghost assigned BruceForstall Mar 6, 2022
@ghost
Copy link

ghost commented Mar 6, 2022

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

Issue Details

null

Author: BruceForstall
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@BruceForstall
Copy link
Member Author

/azp run runtime-coreclr jitstress

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@BruceForstall
Copy link
Member Author

/azp run runtime-coreclr superpmi-replay

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@BruceForstall
Copy link
Member Author

/azp run runtime-coreclr jitstress

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Fix various comments
Assume that any pre-existing initialization is ok. Check it against
zero if necessary. Const inits remain as before.

Lots of diffs due to more cloning for cases of `for (i = expression...`
where `expression` is not just a constant or local var.
@BruceForstall
Copy link
Member Author

/azp run runtime-coreclr jitstress

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@BruceForstall BruceForstall marked this pull request as ready for review March 19, 2022 01:06
@BruceForstall
Copy link
Member Author

@AndyAyersMS PTAL
cc @dotnet/jit-contrib

Will summarize diffs later. Bottom-line: lots more cases where cloning kicks in. Some beneficial, some not. Non-beneficial cases are due to known existing issues with cloning profitability.

Copy link
Member

@AndyAyersMS AndyAyersMS left a comment

Choose a reason for hiding this comment

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

LGTM.

Couple of small suggestions.

implementation does use `unsigned` to represent them.)
8. Constant initializations and constant limits must be non-negative. This is because the
iterator variable will be used as an array index, and array indices must be non-negative.
For `i = v` variable initialization, we add a dynamic check that `v >= 0`. Constant initializations
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
For `i = v` variable initialization, we add a dynamic check that `v >= 0`. Constant initializations
For `i = expr` non-constant initialization, we add a dynamic check that `expr >= 0`. Constant initializations

@@ -808,22 +810,27 @@ bool Compiler::optPopulateInitInfo(unsigned loopInd, BasicBlock* initBlock, GenT

// RHS can be constant or local var.
// TODO-CQ: CLONE: Add arr length for descending loops.
if (rhs->gtOper == GT_CNS_INT && rhs->TypeGet() == TYP_INT)
if (rhs->gtOper != GT_CNS_INT || rhs->TypeGet() != TYP_INT)
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
if (rhs->gtOper != GT_CNS_INT || rhs->TypeGet() != TYP_INT)
if ((rhs->gtOper != GT_CNS_INT) || (rhs->TypeGet() != TYP_INT))

or maybe

Suggested change
if (rhs->gtOper != GT_CNS_INT || rhs->TypeGet() != TYP_INT)
if (!rhs->OperIs(GT_CNS_INT) || !rhs->TypeIs(TYP_INT))

@BruceForstall
Copy link
Member Author

As expected, there are a lot of cases where more cloning occurs. Unfortunately, not all these cases are beneficial, due to all the existing limitations of cloning or the JIT. For example, sometimes range check can get rid of bounds checks that cloning also gets rid of, meaning both "fast" and "slow" path loops end up identical. (Similarly, sometimes we won't clone a loop because we require a very specific loop condition, and but if CSE would have run first, we would then match that condition.) (Also related, cloning inserts various "cloning conditions" to branch to the "slow path", and sometimes subsequent optimization passes can get rid of some of them, like redundant branch elimination.) Note also that sometimes the JIT clones a lot of code to get rid of one bounds check. It's possible that it's beneficial, but the marginal benefit degrades as the amount of code increases.

Some example:

  1. there are a few cases of loops coded like for (int i = 0, n = nodeArray.Length; i < n; ++i) (presumably because the programmer didn't think the JIT would optimize with a.Length in the loop condition?) that are now cloned. Before, we just couldn't find the initialization expression; now it doesn't matter.
  2. some while loops without normal for loop initializations now get cloned.
  3. many loops where the initialization is from an expression now get cloned, such as for (int j = i + 1; j < exceptions.Length; j++)

@BruceForstall
Copy link
Member Author

Asm diffs are a regression because when cloning kicks in, it duplicates code. E.g., win-x64:

aspnet.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 20732279 (overridden on cmd)
Total bytes of diff: 20732881 (overridden on cmd)
Total bytes of delta: 602 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
         433 : 2890.dasm (32.48% of base)
         111 : 34273.dasm (90.98% of base)
          53 : 38895.dasm (24.42% of base)
          45 : 13063.dasm (15.62% of base)
          31 : 13171.dasm (6.44% of base)
           5 : 26119.dasm (3.88% of base)
           1 : 26172.dasm (0.12% of base)
           1 : 26169.dasm (0.06% of base)
           1 : 23680.dasm (0.06% of base)

Top file improvements (bytes):
          -3 : 61956.dasm (-2.33% of base)
          -3 : 64066.dasm (-2.33% of base)
          -3 : 50905.dasm (-2.33% of base)
          -3 : 58804.dasm (-2.33% of base)
          -3 : 56382.dasm (-2.33% of base)
          -3 : 57442.dasm (-2.33% of base)
          -3 : 61084.dasm (-2.33% of base)
          -3 : 19209.dasm (-2.33% of base)
          -3 : 23218.dasm (-2.33% of base)
          -3 : 45242.dasm (-2.33% of base)
          -3 : 17893.dasm (-2.33% of base)
          -2 : 50878.dasm (-0.08% of base)
          -2 : 58779.dasm (-0.08% of base)
          -2 : 64064.dasm (-0.72% of base)
          -2 : 17859.dasm (-0.08% of base)
          -2 : 56494.dasm (-0.08% of base)
          -2 : 64039.dasm (-0.08% of base)
          -2 : 19207.dasm (-0.72% of base)
          -2 : 23191.dasm (-0.08% of base)
          -2 : 50903.dasm (-0.74% of base)

43 total files with Code Size differences (34 improved, 9 regressed), 10 unchanged.

Top method regressions (bytes):
         433 (32.48% of base) : 2890.dasm - MemberInfoCache`1:PopulateInterfaces(Filter):ref:this
         111 (90.98% of base) : 34273.dasm - LogValuesFormatter:FindBraceIndex(String,ushort,int,int):int
          53 (24.42% of base) : 38895.dasm - ILGenerator:SortExceptions(ref)
          45 (15.62% of base) : 13063.dasm - LogValuesFormatter:Format(ref):String:this
          31 ( 6.44% of base) : 13171.dasm - EventSource:GetHelperCallFirstArg(MethodInfo):int
           5 ( 3.88% of base) : 26119.dasm - HttpUtilities:IsHostPortValid(String,int):bool
           1 ( 0.12% of base) : 26172.dasm - BaseHeaderParser:TryParseValue(String,Object,byref,byref):bool:this
           1 ( 0.06% of base) : 26169.dasm - HttpHeaders:TryParseAndAddRawHeaderValue(HeaderDescriptor,HeaderStoreItemInfo,String,bool):bool
           1 ( 0.06% of base) : 23680.dasm - HttpHeaders:TryParseAndAddRawHeaderValue(HeaderDescriptor,HeaderStoreItemInfo,String,bool):bool

Top method improvements (bytes):
          -3 (-2.33% of base) : 61956.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 64066.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 50905.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 58804.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 56382.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 57442.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 61084.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 19209.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 23218.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 45242.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 17893.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -2 (-0.08% of base) : 50878.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 58779.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 17859.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 56494.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 64039.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 23191.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 61061.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 57423.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this
          -2 (-0.08% of base) : 19177.dasm - Http1Connection:TryParseRequest(ReadResult,byref):bool:this

Top method regressions (percentages):
         111 (90.98% of base) : 34273.dasm - LogValuesFormatter:FindBraceIndex(String,ushort,int,int):int
         433 (32.48% of base) : 2890.dasm - MemberInfoCache`1:PopulateInterfaces(Filter):ref:this
          53 (24.42% of base) : 38895.dasm - ILGenerator:SortExceptions(ref)
          45 (15.62% of base) : 13063.dasm - LogValuesFormatter:Format(ref):String:this
          31 ( 6.44% of base) : 13171.dasm - EventSource:GetHelperCallFirstArg(MethodInfo):int
           5 ( 3.88% of base) : 26119.dasm - HttpUtilities:IsHostPortValid(String,int):bool
           1 ( 0.12% of base) : 26172.dasm - BaseHeaderParser:TryParseValue(String,Object,byref,byref):bool:this
           1 ( 0.06% of base) : 23680.dasm - HttpHeaders:TryParseAndAddRawHeaderValue(HeaderDescriptor,HeaderStoreItemInfo,String,bool):bool
           1 ( 0.06% of base) : 26169.dasm - HttpHeaders:TryParseAndAddRawHeaderValue(HeaderDescriptor,HeaderStoreItemInfo,String,bool):bool

Top method improvements (percentages):
          -3 (-2.33% of base) : 61956.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 64066.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 50905.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 58804.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 56382.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 57442.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 61084.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 19209.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 23218.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 45242.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -3 (-2.33% of base) : 17893.dasm - HttpUtilities:IsHostPortValid(String,int):bool
          -2 (-0.74% of base) : 50903.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.74% of base) : 17891.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.74% of base) : 23275.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.74% of base) : 58802.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.74% of base) : 61100.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.74% of base) : 45285.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.72% of base) : 64064.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.72% of base) : 19207.dasm - HttpUtilities:IsHostHeaderValid(String):bool
          -2 (-0.72% of base) : 57469.dasm - HttpUtilities:IsHostHeaderValid(String):bool

43 total methods with Code Size differences (34 improved, 9 regressed), 10 unchanged.


benchmarks.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7238898 (overridden on cmd)
Total bytes of diff: 7244362 (overridden on cmd)
Total bytes of delta: 5464 (0.08 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
         612 : 10570.dasm (8.55% of base)
         610 : 24279.dasm (5.61% of base)
         604 : 25350.dasm (5.75% of base)
         473 : 20455.dasm (7.21% of base)
         405 : 20508.dasm (33.28% of base)
         271 : 2135.dasm (66.10% of base)
         230 : 13313.dasm (33.87% of base)
         191 : 13319.dasm (8.13% of base)
         165 : 16835.dasm (36.59% of base)
         124 : 3480.dasm (17.17% of base)
         117 : 13356.dasm (47.76% of base)
         111 : 5298.dasm (90.98% of base)
          93 : 15198.dasm (3.14% of base)
          90 : 20979.dasm (22.73% of base)
          84 : 11111.dasm (26.17% of base)
          79 : 14686.dasm (24.09% of base)
          79 : 8514.dasm (84.04% of base)
          73 : 25174.dasm (28.52% of base)
          72 : 16739.dasm (6.45% of base)
          66 : 13170.dasm (7.24% of base)

Top file improvements (bytes):
          -9 : 16848.dasm (-7.83% of base)
          -5 : 19539.dasm (-1.11% of base)
          -1 : 1979.dasm (-0.37% of base)
          -1 : 10676.dasm (-0.14% of base)
          -1 : 896.dasm (-0.39% of base)

43 total files with Code Size differences (5 improved, 38 regressed), 5 unchanged.

Top method regressions (bytes):
         612 ( 8.55% of base) : 10570.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,System.Char[]):System.DateTimeOffset
         610 ( 5.61% of base) : 24279.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,System.Char[]):System.DateTimeOffset
         604 ( 5.75% of base) : 25350.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,System.Char[]):System.DateTime
         473 ( 7.21% of base) : 20455.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,System.Char[]):System.DateTime
         405 (33.28% of base) : 20508.dasm - SciMark2.LU:factor(System.Double[][],System.Int32[]):int
         271 (66.10% of base) : 2135.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String)
         230 (33.87% of base) : 13313.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this
         191 ( 8.13% of base) : 13319.dasm - System.Xml.XmlBaseReader:ProcessAttributes(System.Xml.XmlBaseReader+XmlAttributeNode[],int):this
         165 (36.59% of base) : 16835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:QuickScanSyntaxToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
         124 (17.17% of base) : 3480.dasm - System.Xml.Serialization.CodeIdentifier:GetCSharpName(System.Type,System.Type[],int,System.Text.StringBuilder):int
         117 (47.76% of base) : 13356.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this
         111 (90.98% of base) : 5298.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int
          93 ( 3.14% of base) : 15198.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
          90 (22.73% of base) : 20979.dasm - Benchstone.BenchI.AddArray2:BenchInner1(System.Int32[][],byref)
          84 (26.17% of base) : 11111.dasm - System.Collections.BitArray:Not():System.Collections.BitArray:this
          79 (84.04% of base) : 8514.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(System.Byte[],int,int):int
          79 (24.09% of base) : 14686.dasm - System.Xml.XmlConverter:TryParseInt32(System.Byte[],int,int,byref):bool
          73 (28.52% of base) : 25174.dasm - System.Collections.BitArray:.ctor(System.Boolean[]):this
          72 ( 6.45% of base) : 16739.dasm - System.Text.RegularExpressions.Tests.Perf_Regex_Cache:CreatePatterns(int,int):System.String[]
          66 ( 7.24% of base) : 13170.dasm - IDEAEncryption:de_key_idea(System.Char[],System.Char[])

Top method improvements (bytes):
          -9 (-7.83% of base) : 16848.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -5 (-1.11% of base) : 19539.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
          -1 (-0.37% of base) : 1979.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
          -1 (-0.39% of base) : 896.dasm - System.Collections.Generic.ObjectEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
          -1 (-0.14% of base) : 10676.dasm - System.Xml.Serialization.XmlSerializationWriter:ListUsedPrefixes(System.Xml.Serialization.XmlSerializerNamespaces,System.String):System.Collections.Generic.HashSet`1[Int32]:this

Top method regressions (percentages):
         111 (90.98% of base) : 5298.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int
          79 (84.04% of base) : 8514.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(System.Byte[],int,int):int
         271 (66.10% of base) : 2135.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String)
         117 (47.76% of base) : 13356.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this
          60 (40.27% of base) : 1739.dasm - System.Reflection.Emit.ILGenerator:SortExceptions(System.Reflection.Emit.__ExceptionInfo[])
          24 (39.34% of base) : 18354.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors(System.Collections.Immutable.ImmutableArray`1[__Canon]):bool
         165 (36.59% of base) : 16835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:QuickScanSyntaxToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
         230 (33.87% of base) : 13313.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this
         405 (33.28% of base) : 20508.dasm - SciMark2.LU:factor(System.Double[][],System.Int32[]):int
          59 (30.10% of base) : 8404.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeQuotedTextLengthUntilEndQuote(System.Byte[],int,int,byref):int
          73 (28.52% of base) : 25174.dasm - System.Collections.BitArray:.ctor(System.Boolean[]):this
          84 (26.17% of base) : 11111.dasm - System.Collections.BitArray:Not():System.Collections.BitArray:this
          51 (25.63% of base) : 2846.dasm - Sigil.Impl.LinqStack`1[__Canon][System.__Canon]:Peek(bool,int):Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack][]:this
          79 (24.09% of base) : 14686.dasm - System.Xml.XmlConverter:TryParseInt32(System.Byte[],int,int,byref):bool
          90 (22.73% of base) : 20979.dasm - Benchstone.BenchI.AddArray2:BenchInner1(System.Int32[][],byref)
          58 (22.66% of base) : 2462.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(System.Char[],int,int):System.String:this
          29 (20.86% of base) : 7171.dasm - System.Reflection.Metadata.MetadataReader:CombineRowCounts(System.Int32[],System.Int32[],ubyte):System.Int32[]
          44 (19.82% of base) : 19515.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this
         124 (17.17% of base) : 3480.dasm - System.Xml.Serialization.CodeIdentifier:GetCSharpName(System.Type,System.Type[],int,System.Text.StringBuilder):int
          56 (11.89% of base) : 2484.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int

Top method improvements (percentages):
          -9 (-7.83% of base) : 16848.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -5 (-1.11% of base) : 19539.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
          -1 (-0.39% of base) : 896.dasm - System.Collections.Generic.ObjectEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
          -1 (-0.37% of base) : 1979.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
          -1 (-0.14% of base) : 10676.dasm - System.Xml.Serialization.XmlSerializationWriter:ListUsedPrefixes(System.Xml.Serialization.XmlSerializerNamespaces,System.String):System.Collections.Generic.HashSet`1[Int32]:this

43 total methods with Code Size differences (5 improved, 38 regressed), 5 unchanged.


coreclr_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 115036283 (overridden on cmd)
Total bytes of diff: 115037301 (overridden on cmd)
Total bytes of delta: 1018 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
         444 : 101155.dasm (37.31% of base)
         122 : 254787.dasm (2.55% of base)
          93 : 237552.dasm (3.14% of base)
          90 : 129606.dasm (22.73% of base)
          81 : 101156.dasm (13.06% of base)
          66 : 237543.dasm (7.24% of base)
          63 : 118166.dasm (36.84% of base)
          55 : 237553.dasm (7.79% of base)
          15 : 119146.dasm (0.95% of base)
           2 : 129366.dasm (1.35% of base)
           1 : 133180.dasm (1.09% of base)
           1 : 121584.dasm (0.44% of base)

Top file improvements (bytes):
          -5 : 101170.dasm (-1.11% of base)
          -1 : 127789.dasm (-0.58% of base)
          -1 : 127755.dasm (-0.88% of base)
          -1 : 127779.dasm (-0.59% of base)
          -1 : 127773.dasm (-0.58% of base)
          -1 : 127786.dasm (-0.35% of base)
          -1 : 127766.dasm (-0.40% of base)
          -1 : 127749.dasm (-0.88% of base)
          -1 : 127783.dasm (-0.33% of base)
          -1 : 127762.dasm (-0.66% of base)
          -1 : 127776.dasm (-0.57% of base)

23 total files with Code Size differences (11 improved, 12 regressed), 155 unchanged.

Top method regressions (bytes):
         444 (37.31% of base) : 101155.dasm - SciMark2.LU:factor(System.Double[][],System.Int32[]):int
         122 ( 2.55% of base) : 254787.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this
          93 ( 3.14% of base) : 237552.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
          90 (22.73% of base) : 129606.dasm - Benchstone.BenchI.AddArray2:BenchInner1(System.Int32[][],byref)
          81 (13.06% of base) : 101156.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
          66 ( 7.24% of base) : 237543.dasm - IDEAEncryption:de_key_idea(System.Char[],System.Char[])
          63 (36.84% of base) : 118166.dasm - Benchstone.BenchI.BenchE:Strsch(System.Char[],System.Char[],int,int):int
          55 ( 7.79% of base) : 237553.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
          15 ( 0.95% of base) : 119146.dasm - AutoGen.Program:Func1(AutoGen.VType1,long,int,AutoGen.VType2):AutoGen.VType1:this
           2 ( 1.35% of base) : 129366.dasm - Repro:InitMS(int):MyStruct[]
           1 ( 1.09% of base) : 133180.dasm - GenericMethodPatchpoint:F(System.__Canon[],int,int):int
           1 ( 0.44% of base) : 121584.dasm - System.Array:FindIndex(System.Byte[],int,int,System.Predicate`1[Byte]):int

Top method improvements (bytes):
          -5 (-1.11% of base) : 101170.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
          -1 (-0.88% of base) : 127749.dasm - System.Collections.Generic.GenericEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
          -1 (-0.88% of base) : 127755.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this
          -1 (-0.66% of base) : 127762.dasm - System.Collections.Generic.GenericEqualityComparer`1[Vector`1][System.Numerics.Vector`1[System.Single]]:IndexOf(System.Numerics.Vector`1[System.Single][],System.Numerics.Vector`1[Single],int,int):int:this
          -1 (-0.40% of base) : 127766.dasm - System.Collections.Generic.NullableEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Nullable`1[System.Byte][],System.Nullable`1[Byte],int,int):int:this
          -1 (-0.58% of base) : 127773.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
          -1 (-0.33% of base) : 127783.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Double][System.Double]:IndexOf(System.Double[],double,int,int):int:this
          -1 (-0.57% of base) : 127776.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this
          -1 (-0.59% of base) : 127779.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int32][System.Int32]:IndexOf(System.Int32[],int,int,int):int:this
          -1 (-0.58% of base) : 127789.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int64][System.Int64]:IndexOf(System.Int64[],long,int,int):int:this
          -1 (-0.35% of base) : 127786.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Vector`1][System.Numerics.Vector`1[System.Single]]:IndexOf(System.Numerics.Vector`1[System.Single][],System.Numerics.Vector`1[Single],int,int):int:this

Top method regressions (percentages):
         444 (37.31% of base) : 101155.dasm - SciMark2.LU:factor(System.Double[][],System.Int32[]):int
          63 (36.84% of base) : 118166.dasm - Benchstone.BenchI.BenchE:Strsch(System.Char[],System.Char[],int,int):int
          90 (22.73% of base) : 129606.dasm - Benchstone.BenchI.AddArray2:BenchInner1(System.Int32[][],byref)
          81 (13.06% of base) : 101156.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
          55 ( 7.79% of base) : 237553.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
          66 ( 7.24% of base) : 237543.dasm - IDEAEncryption:de_key_idea(System.Char[],System.Char[])
          93 ( 3.14% of base) : 237552.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
         122 ( 2.55% of base) : 254787.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this
           2 ( 1.35% of base) : 129366.dasm - Repro:InitMS(int):MyStruct[]
           1 ( 1.09% of base) : 133180.dasm - GenericMethodPatchpoint:F(System.__Canon[],int,int):int
          15 ( 0.95% of base) : 119146.dasm - AutoGen.Program:Func1(AutoGen.VType1,long,int,AutoGen.VType2):AutoGen.VType1:this
           1 ( 0.44% of base) : 121584.dasm - System.Array:FindIndex(System.Byte[],int,int,System.Predicate`1[Byte]):int

Top method improvements (percentages):
          -5 (-1.11% of base) : 101170.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
          -1 (-0.88% of base) : 127749.dasm - System.Collections.Generic.GenericEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
          -1 (-0.88% of base) : 127755.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this
          -1 (-0.66% of base) : 127762.dasm - System.Collections.Generic.GenericEqualityComparer`1[Vector`1][System.Numerics.Vector`1[System.Single]]:IndexOf(System.Numerics.Vector`1[System.Single][],System.Numerics.Vector`1[Single],int,int):int:this
          -1 (-0.59% of base) : 127779.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int32][System.Int32]:IndexOf(System.Int32[],int,int,int):int:this
          -1 (-0.58% of base) : 127773.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
          -1 (-0.58% of base) : 127789.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int64][System.Int64]:IndexOf(System.Int64[],long,int,int):int:this
          -1 (-0.57% of base) : 127776.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this
          -1 (-0.40% of base) : 127766.dasm - System.Collections.Generic.NullableEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Nullable`1[System.Byte][],System.Nullable`1[Byte],int,int):int:this
          -1 (-0.35% of base) : 127786.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Vector`1][System.Numerics.Vector`1[System.Single]]:IndexOf(System.Numerics.Vector`1[System.Single][],System.Numerics.Vector`1[Single],int,int):int:this
          -1 (-0.33% of base) : 127783.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Double][System.Double]:IndexOf(System.Double[],double,int,int):int:this

23 total methods with Code Size differences (11 improved, 12 regressed), 155 unchanged.


libraries.crossgen2.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 29838820 (overridden on cmd)
Total bytes of diff: 29852720 (overridden on cmd)
Total bytes of delta: 13900 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
        2219 : 111117.dasm (55.87% of base)
        1148 : 217991.dasm (87.77% of base)
         708 : 218045.dasm (29.76% of base)
         420 : 113814.dasm (47.40% of base)
         376 : 196049.dasm (8.83% of base)
         354 : 217987.dasm (66.04% of base)
         300 : 173544.dasm (15.09% of base)
         295 : 137286.dasm (34.14% of base)
         280 : 210753.dasm (46.82% of base)
         278 : 126631.dasm (72.21% of base)
         271 : 219785.dasm (23.50% of base)
         238 : 110622.dasm (65.03% of base)
         236 : 111068.dasm (57.99% of base)
         222 : 113781.dasm (17.83% of base)
         216 : 210760.dasm (70.13% of base)
         198 : 166368.dasm (17.57% of base)
         187 : 111148.dasm (62.54% of base)
         184 : 177958.dasm (54.76% of base)
         163 : 119293.dasm (23.49% of base)
         159 : 118877.dasm (51.79% of base)

Top file improvements (bytes):
         -15 : 98661.dasm (-10.71% of base)
         -11 : 218071.dasm (-1.66% of base)
          -8 : 75469.dasm (-2.85% of base)
          -6 : 158902.dasm (-0.88% of base)
          -5 : 64250.dasm (-1.72% of base)
          -4 : 166532.dasm (-1.64% of base)
          -4 : 218425.dasm (-0.56% of base)
          -4 : 166533.dasm (-1.34% of base)
          -4 : 51499.dasm (-1.36% of base)
          -4 : 51500.dasm (-1.63% of base)
          -3 : 158903.dasm (-0.61% of base)
          -3 : 201622.dasm (-1.09% of base)
          -3 : 201609.dasm (-0.64% of base)
          -2 : 22623.dasm (-0.36% of base)
          -2 : 26880.dasm (-0.95% of base)
          -2 : 27602.dasm (-0.79% of base)
          -2 : 48940.dasm (-0.88% of base)
          -2 : 26879.dasm (-1.09% of base)
          -2 : 82658.dasm (-1.83% of base)
          -2 : 82662.dasm (-1.83% of base)

135 total files with Code Size differences (28 improved, 107 regressed), 25 unchanged.

Top method regressions (bytes):
        2219 (55.87% of base) : 111117.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this
        1148 (87.77% of base) : 217991.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):bool
         708 (29.76% of base) : 218045.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MoreSpecificProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],int,byref,bool):Microsoft.VisualBasic.CompilerServices.Symbols+Method
         420 (47.40% of base) : 113814.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String)
         376 ( 8.83% of base) : 196049.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this
         354 (66.04% of base) : 217987.dasm - Microsoft.VisualBasic.CompilerServices.StringType:AsteriskSkip(System.String,System.String,int,int,System.Globalization.CompareInfo):int
         300 (15.09% of base) : 173544.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
         295 (34.14% of base) : 137286.dasm - System.Data.Common.SqlStringStorage:Aggregate(System.Int32[],int):System.Object:this
         280 (46.82% of base) : 210753.dasm - System.Linq.EnumerableRewriter:ArgsMatch(System.Reflection.MethodInfo,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression],System.Type[]):bool
         278 (72.21% of base) : 126631.dasm - System.Xml.XmlConvert:EscapeValueForDebuggerDisplay(System.String):System.String
         271 (23.50% of base) : 219785.dasm - ArgInput:.ctor(System.String[]):this
         238 (65.03% of base) : 110622.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String)
         236 (57.99% of base) : 111068.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitSwitchCases(System.Linq.Expressions.SwitchExpression,System.Reflection.Emit.Label[],System.Boolean[],System.Reflection.Emit.Label,System.Reflection.Emit.Label,int):this
         222 (17.83% of base) : 113781.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String)
         216 (70.13% of base) : 210760.dasm - System.Linq.EnumerableRewriter:FixupQuotedArgs(System.Reflection.MethodInfo,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this
         198 (17.57% of base) : 166368.dasm - Xunit.Sdk.TypeUtility:ResolveMethodArguments(System.Reflection.MethodBase,System.Object[]):System.Object[]
         187 (62.54% of base) : 111148.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitArguments(System.Reflection.MethodBase,System.Linq.Expressions.IArgumentProvider,int):System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]:this
         184 (54.76% of base) : 177958.dasm - System.CommandLine.Parsing.StringExtensions:ToKebabCase(System.String):System.String
         163 (23.49% of base) : 119293.dasm - System.Xml.Xsl.XsltOld.Compiler:getXPathLex(System.String,byref,System.Text.StringBuilder)
         159 (51.79% of base) : 118877.dasm - System.Xml.Xsl.XsltOld.RecordBuilder:AnalyzeProcessingInstruction():this

Top method improvements (bytes):
         -15 (-10.71% of base) : 98661.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
         -11 (-1.66% of base) : 218071.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:IsExactSignatureMatch(System.Reflection.ParameterInfo[],int,System.Reflection.ParameterInfo[],int):bool
          -8 (-2.85% of base) : 75469.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.IndexedTypeParameterSymbol:GrowPool(int)
          -6 (-0.88% of base) : 158902.dasm - System.Security.Cryptography.DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
          -5 (-1.72% of base) : 64250.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.SyntaxNode[],int,int):Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:this
          -4 (-0.56% of base) : 218425.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:UnpackArguments(System.Dynamic.DynamicMetaObject[],System.Dynamic.CallInfo,byref,byref,byref)
          -4 (-1.63% of base) : 51500.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations():this
          -4 (-1.36% of base) : 51499.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations(System.Type):this
          -4 (-1.64% of base) : 166532.dasm - System.Xml.Linq.XObject:RemoveAnnotations():this
          -4 (-1.34% of base) : 166533.dasm - System.Xml.Linq.XObject:RemoveAnnotations(System.Type):this
          -3 (-1.09% of base) : 201622.dasm - System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):bool:this
          -3 (-0.64% of base) : 201609.dasm - System.Reflection.Runtime.BindingFlagSupport.PropertyPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.PropertyInfo,System.Reflection.PropertyInfo[],int,int):bool:this
          -3 (-0.61% of base) : 158903.dasm - System.Security.Cryptography.DSACng:GenerateV1DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
          -2 (-1.46% of base) : 110177.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
          -2 (-1.83% of base) : 82658.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -2 (-1.83% of base) : 82662.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
          -2 (-0.88% of base) : 48940.dasm - System.Collections.Generic.NullableEqualityComparer`1:IndexOf(System.Nullable`1[System.Int32][],System.Nullable`1[System.Int32],int,int):int:this
          -2 (-0.79% of base) : 27602.dasm - System.Collections.Generic.ObjectEqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
          -2 (-0.36% of base) : 22623.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetEscapedFilterValue(System.String):System.String
          -2 (-0.95% of base) : 26880.dasm - System.Net.MultiArrayBuffer:Discard(int):this

Top method regressions (percentages):
         111 (90.24% of base) : 191421.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int
        1148 (87.77% of base) : 217991.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):bool
          80 (85.11% of base) : 133373.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(System.Byte[],int,int):int
         121 (78.57% of base) : 110970.dasm - ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
         278 (72.21% of base) : 126631.dasm - System.Xml.XmlConvert:EscapeValueForDebuggerDisplay(System.String):System.String
         216 (70.13% of base) : 210760.dasm - System.Linq.EnumerableRewriter:FixupQuotedArgs(System.Reflection.MethodInfo,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this
         354 (66.04% of base) : 217987.dasm - Microsoft.VisualBasic.CompilerServices.StringType:AsteriskSkip(System.String,System.String,int,int,System.Globalization.CompareInfo):int
         238 (65.03% of base) : 110622.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String)
         187 (62.54% of base) : 111148.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitArguments(System.Reflection.MethodBase,System.Linq.Expressions.IArgumentProvider,int):System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]:this
          33 (62.26% of base) : 160941.dasm - BCrypt:EmitByte(System.Byte[],byref,ubyte,int)
         236 (57.99% of base) : 111068.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitSwitchCases(System.Linq.Expressions.SwitchExpression,System.Reflection.Emit.Label[],System.Boolean[],System.Reflection.Emit.Label,System.Reflection.Emit.Label,int):this
          39 (57.35% of base) : 107251.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:GetIndexOfFirstNonWhitespaceChar(System.String,int,int):int
         150 (56.18% of base) : 26320.dasm - System.Net.Http.HttpRuleParser:GetHostLength(System.String,int,bool):int
        2219 (55.87% of base) : 111117.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this
          29 (55.77% of base) : 107252.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:GetIndexOfFirstNonWhitespaceChar(System.String):int
         184 (54.76% of base) : 177958.dasm - System.CommandLine.Parsing.StringExtensions:ToKebabCase(System.String):System.String
          33 (54.10% of base) : 190104.dasm - Xunit.Assert:SkipWhitespace(System.String,int):int
         159 (51.79% of base) : 118877.dasm - System.Xml.Xsl.XsltOld.RecordBuilder:AnalyzeProcessingInstruction():this
          41 (49.40% of base) : 84333.dasm - Microsoft.CodeAnalysis.ArrayBuilder`1:AddRange(System.__Canon[],int,int):this
          41 (49.40% of base) : 88257.dasm - Microsoft.CodeAnalysis.ArrayBuilder`1:AddRange(System.Boolean[],int,int):this

Top method improvements (percentages):
         -15 (-10.71% of base) : 98661.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
          -8 (-2.85% of base) : 75469.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.IndexedTypeParameterSymbol:GrowPool(int)
          -2 (-1.83% of base) : 82658.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -2 (-1.83% of base) : 82662.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
          -5 (-1.72% of base) : 64250.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.SyntaxNode[],int,int):Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:this
         -11 (-1.66% of base) : 218071.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:IsExactSignatureMatch(System.Reflection.ParameterInfo[],int,System.Reflection.ParameterInfo[],int):bool
          -4 (-1.64% of base) : 166532.dasm - System.Xml.Linq.XObject:RemoveAnnotations():this
          -4 (-1.63% of base) : 51500.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations():this
          -2 (-1.46% of base) : 110177.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
          -4 (-1.36% of base) : 51499.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations(System.Type):this
          -4 (-1.34% of base) : 166533.dasm - System.Xml.Linq.XObject:RemoveAnnotations(System.Type):this
          -2 (-1.09% of base) : 26879.dasm - System.Net.MultiArrayBuffer:DiscardAll():this
          -2 (-1.09% of base) : 215479.dasm - System.Net.MultiArrayBuffer:DiscardAll():this
          -3 (-1.09% of base) : 201622.dasm - System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):bool:this
          -2 (-0.95% of base) : 26880.dasm - System.Net.MultiArrayBuffer:Discard(int):this
          -2 (-0.95% of base) : 215480.dasm - System.Net.MultiArrayBuffer:Discard(int):this
          -2 (-0.88% of base) : 48940.dasm - System.Collections.Generic.NullableEqualityComparer`1:IndexOf(System.Nullable`1[System.Int32][],System.Nullable`1[System.Int32],int,int):int:this
          -6 (-0.88% of base) : 158902.dasm - System.Security.Cryptography.DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
          -1 (-0.84% of base) : 26323.dasm - System.Net.Http.HttpRuleParser:GetWhitespaceLength(System.String,int):int
          -2 (-0.79% of base) : 27602.dasm - System.Collections.Generic.ObjectEqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this

135 total methods with Code Size differences (28 improved, 107 regressed), 25 unchanged.


libraries.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47958511 (overridden on cmd)
Total bytes of diff: 47973036 (overridden on cmd)
Total bytes of delta: 14525 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
        1321 : 171772.dasm (97.92% of base)
         716 : 207671.dasm (25.39% of base)
         699 : 171741.dasm (29.03% of base)
         697 : 207680.dasm (24.91% of base)
         491 : 54273.dasm (34.22% of base)
         459 : 49423.dasm (1.97% of base)
         420 : 25119.dasm (53.50% of base)
         354 : 171776.dasm (51.23% of base)
         307 : 207953.dasm (50.66% of base)
         305 : 52999.dasm (15.74% of base)
         303 : 166493.dasm (10.44% of base)
         271 : 127142.dasm (66.10% of base)
         256 : 119825.dasm (29.36% of base)
         255 : 126508.dasm (57.05% of base)
         252 : 78195.dasm (45.57% of base)
         230 : 133498.dasm (33.87% of base)
         192 : 54328.dasm (29.68% of base)
         190 : 42664.dasm (21.30% of base)
         179 : 41849.dasm (5.75% of base)
         175 : 34849.dasm (38.04% of base)

Top file improvements (bytes):
         -34 : 172108.dasm (-3.36% of base)
         -19 : 28534.dasm (-0.86% of base)
         -15 : 35344.dasm (-11.03% of base)
         -11 : 63346.dasm (-4.53% of base)
          -9 : 81113.dasm (-7.83% of base)
          -9 : 81117.dasm (-7.83% of base)
          -7 : 75075.dasm (-1.58% of base)
          -7 : 52110.dasm (-2.35% of base)
          -5 : 171339.dasm (-0.63% of base)
          -4 : 171715.dasm (-0.66% of base)
          -4 : 105884.dasm (-1.59% of base)
          -4 : 220638.dasm (-1.25% of base)
          -4 : 220639.dasm (-1.61% of base)
          -4 : 105885.dasm (-1.22% of base)
          -3 : 222634.dasm (-1.00% of base)
          -3 : 154365.dasm (-0.36% of base)
          -2 : 53001.dasm (-0.43% of base)
          -1 : 21983.dasm (-0.58% of base)
          -1 : 21986.dasm (-0.57% of base)
          -1 : 222622.dasm (-0.37% of base)

147 total files with Code Size differences (31 improved, 116 regressed), 14 unchanged.

Top method regressions (bytes):
        1321 (97.92% of base) : 171772.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):bool
         716 (25.39% of base) : 207671.dasm - System.Linq.Parallel.SortHelper`2[__Canon,Nullable`1][System.__Canon,System.Nullable`1[System.Int32]]:MergeSortCooperatively():this
         699 (29.03% of base) : 171741.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:MoreSpecificProcedure(Method,Method,System.Object[],System.String[],int,byref,bool):Method
         697 (24.91% of base) : 207680.dasm - System.Linq.Parallel.SortHelper`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:MergeSortCooperatively():this
         491 (34.22% of base) : 54273.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CustomModifier, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CustomModifier, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         459 ( 1.97% of base) : 49423.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
         420 (53.50% of base) : 25119.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxAndDeclarationManager:GetRemoveSet(Microsoft.CodeAnalysis.SyntaxTree,bool,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableDictionary`2[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.Int32, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Immutable.ImmutableDictionary`2[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.LoadDirective, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Collections.Immutable.ImmutableDictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Generic.HashSet`1[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],byref,byref)
         354 (51.23% of base) : 171776.dasm - Microsoft.VisualBasic.CompilerServices.StringType:AsteriskSkip(System.String,System.String,int,int,System.Globalization.CompareInfo):int
         307 (50.66% of base) : 207953.dasm - System.Linq.EnumerableRewriter:ArgsMatch(System.Reflection.MethodInfo,System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Linq.Expressions.Expression, System.Linq.Expressions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Type[]):bool
         305 (15.74% of base) : 52999.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.DiagnosticBag):this
         303 (10.44% of base) : 166493.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
         271 (66.10% of base) : 127142.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String)
         256 (29.36% of base) : 119825.dasm - System.Data.Common.SqlStringStorage:Aggregate(System.Int32[],int):System.Object:this
         255 (57.05% of base) : 126508.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitSwitchCases(System.Linq.Expressions.SwitchExpression,System.Reflection.Emit.Label[],System.Boolean[],System.Reflection.Emit.Label,System.Reflection.Emit.Label,int):this
         252 (45.57% of base) : 78195.dasm - Microsoft.CodeAnalysis.ISymbolExtensions:GetConstructedReducedFrom(Microsoft.CodeAnalysis.IMethodSymbol):Microsoft.CodeAnalysis.IMethodSymbol
         230 (33.87% of base) : 133498.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this
         192 (29.68% of base) : 54328.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
         190 (21.30% of base) : 42664.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergeIndexersAndNonIndexers(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]:this
         179 ( 5.75% of base) : 41849.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbolExtensions:InferExtensionMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.Compilation,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
         175 (38.04% of base) : 34849.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:QuickScanSyntaxToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this

Top method improvements (bytes):
         -34 (-3.36% of base) : 172108.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):bool:this
         -19 (-0.86% of base) : 28534.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildStoresToTemps(bool,System.Collections.Immutable.ImmutableArray`1[Int32],System.Collections.Immutable.ImmutableArray`1[RefKind],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.ArrayBuilder`1[RefKind],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
         -15 (-11.03% of base) : 35344.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
         -11 (-4.53% of base) : 63346.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.SyntaxNode[],int,int):Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:this
          -9 (-7.83% of base) : 81117.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -9 (-7.83% of base) : 81113.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
          -7 (-1.58% of base) : 75075.dasm - Microsoft.Cci.MetadataWriter:SerializeParameterInformation(Microsoft.Cci.IParameterTypeInformation,Microsoft.Cci.BlobBuilder):this
          -7 (-2.35% of base) : 52110.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.IndexedTypeParameterSymbol:GrowPool(int)
          -5 (-0.63% of base) : 171339.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:UnpackArguments(System.Dynamic.DynamicMetaObject[],System.Dynamic.CallInfo,byref,byref,byref)
          -4 (-0.66% of base) : 171715.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:IsExactSignatureMatch(System.Reflection.ParameterInfo[],int,System.Reflection.ParameterInfo[],int):bool
          -4 (-1.59% of base) : 105884.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations():this
          -4 (-1.22% of base) : 105885.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations(System.Type):this
          -4 (-1.61% of base) : 220639.dasm - System.Xml.Linq.XObject:RemoveAnnotations():this
          -4 (-1.25% of base) : 220638.dasm - System.Xml.Linq.XObject:RemoveAnnotations(System.Type):this
          -3 (-1.00% of base) : 222634.dasm - System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):bool:this
          -3 (-0.36% of base) : 154365.dasm - System.Security.Cryptography.DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
          -2 (-0.43% of base) : 53001.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:IsConflictingOperatorOverloading(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.DiagnosticBag):bool:this
          -1 (-0.68% of base) : 23207.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMatchingNamedConstructorArgumentIndex(System.String,System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],int,int):int
          -1 (-0.88% of base) : 21959.dasm - System.Collections.Generic.GenericEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
          -1 (-0.88% of base) : 21965.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this

Top method regressions (percentages):
        1321 (97.92% of base) : 171772.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):bool
         111 (90.98% of base) : 169898.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int
          79 (84.04% of base) : 135826.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(System.Byte[],int,int):int
         144 (81.36% of base) : 25149.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:ChecksumMatches(System.String,System.Collections.Immutable.ImmutableArray`1[Byte]):bool
         174 (80.56% of base) : 126763.dasm - ChildRewriter:MarkRefArgs(System.Reflection.MethodBase,int):this
          45 (71.43% of base) : 242481.dasm - Xunit.Assert:SkipWhitespace(System.String,int):int
         271 (66.10% of base) : 127142.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String)
          38 (57.58% of base) : 25728.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:GetIndexOfFirstNonWhitespaceChar(System.String,int,int):int
         255 (57.05% of base) : 126508.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitSwitchCases(System.Linq.Expressions.SwitchExpression,System.Reflection.Emit.Label[],System.Boolean[],System.Reflection.Emit.Label,System.Reflection.Emit.Label,int):this
          28 (54.90% of base) : 25727.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:GetIndexOfFirstNonWhitespaceChar(System.String):int
         117 (54.17% of base) : 135012.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this
          67 (54.03% of base) : 78905.dasm - Microsoft.CodeAnalysis.ArrayBuilder`1[__Canon][System.__Canon]:AddRange(System.__Canon[],int,int):this
         420 (53.50% of base) : 25119.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxAndDeclarationManager:GetRemoveSet(Microsoft.CodeAnalysis.SyntaxTree,bool,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableDictionary`2[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.Int32, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Immutable.ImmutableDictionary`2[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.LoadDirective, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Collections.Immutable.ImmutableDictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Generic.HashSet`1[[Microsoft.CodeAnalysis.SyntaxTree, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],byref,byref)
         354 (51.23% of base) : 171776.dasm - Microsoft.VisualBasic.CompilerServices.StringType:AsteriskSkip(System.String,System.String,int,int,System.Globalization.CompareInfo):int
         307 (50.66% of base) : 207953.dasm - System.Linq.EnumerableRewriter:ArgsMatch(System.Reflection.MethodInfo,System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Linq.Expressions.Expression, System.Linq.Expressions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Type[]):bool
         118 (50.64% of base) : 102641.dasm - <>c__DisplayClass120_0:<FastSerialization.IFastSerializable.ToStream>b__3():this
         166 (50.30% of base) : 128266.dasm - System.Net.Http.HttpRuleParser:GetHostLength(System.String,int,bool):int
         167 (48.69% of base) : 147487.dasm - System.Xml.Xsl.XsltOld.RecordBuilder:AnalyzeProcessingInstruction():this
          49 (48.51% of base) : 81295.dasm - Roslyn.Utilities.StringExtensions:IndexOfBalancedParenthesis(System.String,int,ushort):int
         117 (47.76% of base) : 135013.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this

Top method improvements (percentages):
         -15 (-11.03% of base) : 35344.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
          -9 (-7.83% of base) : 81117.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -9 (-7.83% of base) : 81113.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
         -11 (-4.53% of base) : 63346.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.SyntaxNode[],int,int):Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:this
         -34 (-3.36% of base) : 172108.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):bool:this
          -7 (-2.35% of base) : 52110.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.IndexedTypeParameterSymbol:GrowPool(int)
          -4 (-1.61% of base) : 220639.dasm - System.Xml.Linq.XObject:RemoveAnnotations():this
          -4 (-1.59% of base) : 105884.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations():this
          -7 (-1.58% of base) : 75075.dasm - Microsoft.Cci.MetadataWriter:SerializeParameterInformation(Microsoft.Cci.IParameterTypeInformation,Microsoft.Cci.BlobBuilder):this
          -4 (-1.25% of base) : 220638.dasm - System.Xml.Linq.XObject:RemoveAnnotations(System.Type):this
          -4 (-1.22% of base) : 105885.dasm - Newtonsoft.Json.Linq.JToken:RemoveAnnotations(System.Type):this
          -3 (-1.00% of base) : 222634.dasm - System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):bool:this
          -1 (-0.88% of base) : 21959.dasm - System.Collections.Generic.GenericEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
          -1 (-0.88% of base) : 21965.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this
         -19 (-0.86% of base) : 28534.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildStoresToTemps(bool,System.Collections.Immutable.ImmutableArray`1[Int32],System.Collections.Immutable.ImmutableArray`1[RefKind],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.ArrayBuilder`1[RefKind],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
          -1 (-0.68% of base) : 23207.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMatchingNamedConstructorArgumentIndex(System.String,System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],int,int):int
          -1 (-0.66% of base) : 21972.dasm - System.Collections.Generic.GenericEqualityComparer`1[Vector`1][System.Numerics.Vector`1[System.Single]]:IndexOf(System.Numerics.Vector`1[System.Single][],System.Numerics.Vector`1[Single],int,int):int:this
          -4 (-0.66% of base) : 171715.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:IsExactSignatureMatch(System.Reflection.ParameterInfo[],int,System.Reflection.ParameterInfo[],int):bool
          -5 (-0.63% of base) : 171339.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:UnpackArguments(System.Dynamic.DynamicMetaObject[],System.Dynamic.CallInfo,byref,byref,byref)
          -1 (-0.59% of base) : 21989.dasm - System.Collections.Generic.ObjectEqualityComparer`1[Int32][System.Int32]:IndexOf(System.Int32[],int,int,int):int:this

147 total methods with Code Size differences (31 improved, 116 regressed), 14 unchanged.


libraries_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 121352124 (overridden on cmd)
Total bytes of diff: 121357310 (overridden on cmd)
Total bytes of delta: 5186 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
         499 : 117621.dasm (40.31% of base)
         257 : 169353.dasm (39.30% of base)
         239 : 295075.dasm (36.21% of base)
         189 : 133856.dasm (72.41% of base)
         166 : 175930.dasm (49.55% of base)
         165 : 13759.dasm (74.66% of base)
         164 : 13758.dasm (74.55% of base)
         152 : 136210.dasm (76.38% of base)
         152 : 259232.dasm (76.38% of base)
         152 : 133431.dasm (76.38% of base)
         152 : 258399.dasm (76.38% of base)
         152 : 257724.dasm (76.38% of base)
         152 : 257203.dasm (76.38% of base)
         152 : 259589.dasm (76.38% of base)
         152 : 260756.dasm (76.38% of base)
         152 : 258787.dasm (76.38% of base)
         134 : 299132.dasm (22.79% of base)
         111 : 250329.dasm (90.98% of base)
         106 : 256109.dasm (13.66% of base)
          92 : 6832.dasm (82.14% of base)

Top file improvements (bytes):
          -9 : 1125.dasm (-7.83% of base)
          -6 : 225429.dasm (-0.36% of base)
          -4 : 128393.dasm (-1.59% of base)
          -4 : 225426.dasm (-0.30% of base)
          -4 : 225424.dasm (-0.34% of base)
          -4 : 128394.dasm (-1.22% of base)
          -4 : 225427.dasm (-0.29% of base)
          -4 : 225425.dasm (-0.33% of base)
          -3 : 120502.dasm (-2.65% of base)
          -1 : 204899.dasm (-0.18% of base)
          -1 : 204945.dasm (-0.14% of base)
          -1 : 351697.dasm (-0.79% of base)
          -1 : 204923.dasm (-0.18% of base)
          -1 : 350775.dasm (-0.79% of base)

70 total files with Code Size differences (14 improved, 56 regressed), 15 unchanged.

Top method regressions (bytes):
         499 (40.31% of base) : 117621.dasm - Microsoft.CodeAnalysis.CSharp.CodeStyle.TypeStyle.TypeStyleHelper:IsTypeApparentInAssignmentExpression(int,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.ITypeSymbol,System.Threading.CancellationToken):bool
         257 (39.30% of base) : 169353.dasm - MethodComparer:Equals(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool:this
         239 (36.21% of base) : 295075.dasm - MethodComparer:Equals(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool:this
         189 (72.41% of base) : 133856.dasm - NuGet.Packaging.PackageBuilder:EncodeHexString(System.Byte[]):System.String
         166 (49.55% of base) : 175930.dasm - System.Net.Http.HttpRuleParser:GetHostLength(System.String,int,bool):int
         165 (74.66% of base) : 13759.dasm - <>c:<.cctor>b__58_3(System.String,Microsoft.CodeAnalysis.Text.TextSpan):bool:this
         164 (74.55% of base) : 13758.dasm - <>c:<.cctor>b__58_2(System.String,Microsoft.CodeAnalysis.Text.TextSpan):bool:this
         152 (76.38% of base) : 136210.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 259232.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 133431.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 258399.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 257724.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 257203.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 259589.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 260756.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 258787.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         134 (22.79% of base) : 299132.dasm - System.Net.Mime.MailBnfHelper:GetTokenOrQuotedString(System.String,System.Text.StringBuilder,bool)
         111 (90.98% of base) : 250329.dasm - Parser:FindBraceIndex(System.String,ushort,int,int):int
         106 (13.66% of base) : 256109.dasm - Moq.Mock:VerifyNoOtherCalls(Moq.Mock,System.Collections.Generic.HashSet`1[[Moq.Mock, Moq, Version=4.12.0.0, Culture=neutral, PublicKeyToken=69f491c39445e920]])
          92 (82.14% of base) : 6832.dasm - Microsoft.CodeAnalysis.Shared.Utilities.StringBreaker:SkipPunctuation(System.String,int,int):int

Top method improvements (bytes):
          -9 (-7.83% of base) : 1125.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -6 (-0.36% of base) : 225429.dasm - Tests.System.Net.MultiArrayBufferTests:CopyFromRepeatedlyAndCopyToRepeatedly_LargeCopies_Success():this
          -4 (-1.59% of base) : 128393.dasm - Microsoft.IdentityModel.Json.Linq.JToken:RemoveAnnotations():this
          -4 (-1.22% of base) : 128394.dasm - Microsoft.IdentityModel.Json.Linq.JToken:RemoveAnnotations(System.Type):this
          -4 (-0.34% of base) : 225424.dasm - Tests.System.Net.MultiArrayBufferTests:AddByteByByteAndConsumeByteByByte_Success():this
          -4 (-0.33% of base) : 225425.dasm - Tests.System.Net.MultiArrayBufferTests:AddSeveralBytesRepeatedlyAndConsumeSeveralBytesRepeatedly_Success():this
          -4 (-0.30% of base) : 225426.dasm - Tests.System.Net.MultiArrayBufferTests:AddSeveralBytesRepeatedlyAndConsumeSeveralBytesRepeatedly_UsingSlice_Success():this
          -4 (-0.29% of base) : 225427.dasm - Tests.System.Net.MultiArrayBufferTests:AddSeveralBytesRepeatedlyAndConsumeSeveralBytesRepeatedly_UsingSliceWithLength_Success():this
          -3 (-2.65% of base) : 120502.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.SyntaxKindExtensions:IndexOf(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind[],ushort,int):int
          -1 (-0.79% of base) : 351697.dasm - ChecksumWriter:Write(System.Char[],int,int):this
          -1 (-0.79% of base) : 350775.dasm - ChecksumWriter:Write(System.Char[],int,int):this
          -1 (-0.18% of base) : 204899.dasm - System.Text.RegularExpressions.Tests.CaptureCollectionTests:ICollection_CopyTo(int)
          -1 (-0.18% of base) : 204923.dasm - System.Text.RegularExpressions.Tests.GroupCollectionTests:ICollection_CopyTo(int)
          -1 (-0.14% of base) : 204945.dasm - System.Text.RegularExpressions.Tests.MatchCollectionTests:ICollection_CopyTo(int)

Top method regressions (percentages):
         111 (90.98% of base) : 250329.dasm - Parser:FindBraceIndex(System.String,ushort,int,int):int
          92 (82.14% of base) : 6832.dasm - Microsoft.CodeAnalysis.Shared.Utilities.StringBreaker:SkipPunctuation(System.String,int,int):int
         152 (76.38% of base) : 136210.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 259232.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 133431.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 258399.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 257724.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 257203.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 259589.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 260756.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         152 (76.38% of base) : 258787.dasm - NuGet.Shared.EncodingUtility:ToHex(System.Byte[],int):System.String
         165 (74.66% of base) : 13759.dasm - <>c:<.cctor>b__58_3(System.String,Microsoft.CodeAnalysis.Text.TextSpan):bool:this
         164 (74.55% of base) : 13758.dasm - <>c:<.cctor>b__58_2(System.String,Microsoft.CodeAnalysis.Text.TextSpan):bool:this
          64 (72.73% of base) : 256183.dasm - Moq.InvocationShape:SetupEvaluatedSuccessfully(Moq.Invocation):this
         189 (72.41% of base) : 133856.dasm - NuGet.Packaging.PackageBuilder:EncodeHexString(System.Byte[]):System.String
          67 (54.03% of base) : 5937.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[__Canon][System.__Canon]:AddRange(System.__Canon[],int,int):this
          67 (54.03% of base) : 5935.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[__Canon][System.__Canon]:AddRange(System.Collections.Immutable.ImmutableArray`1[__Canon],int,int):this
          51 (53.12% of base) : 2275.dasm - Roslyn.Utilities.StringEscapeEncoder:ParseHex(System.String,int,int):int
         166 (49.55% of base) : 175930.dasm - System.Net.Http.HttpRuleParser:GetHostLength(System.String,int,bool):int
          51 (43.22% of base) : 352332.dasm - System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this

Top method improvements (percentages):
          -9 (-7.83% of base) : 1125.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -3 (-2.65% of base) : 120502.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.SyntaxKindExtensions:IndexOf(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind[],ushort,int):int
          -4 (-1.59% of base) : 128393.dasm - Microsoft.IdentityModel.Json.Linq.JToken:RemoveAnnotations():this
          -4 (-1.22% of base) : 128394.dasm - Microsoft.IdentityModel.Json.Linq.JToken:RemoveAnnotations(System.Type):this
          -1 (-0.79% of base) : 351697.dasm - ChecksumWriter:Write(System.Char[],int,int):this
          -1 (-0.79% of base) : 350775.dasm - ChecksumWriter:Write(System.Char[],int,int):this
          -6 (-0.36% of base) : 225429.dasm - Tests.System.Net.MultiArrayBufferTests:CopyFromRepeatedlyAndCopyToRepeatedly_LargeCopies_Success():this
          -4 (-0.34% of base) : 225424.dasm - Tests.System.Net.MultiArrayBufferTests:AddByteByByteAndConsumeByteByByte_Success():this
          -4 (-0.33% of base) : 225425.dasm - Tests.System.Net.MultiArrayBufferTests:AddSeveralBytesRepeatedlyAndConsumeSeveralBytesRepeatedly_Success():this
          -4 (-0.30% of base) : 225426.dasm - Tests.System.Net.MultiArrayBufferTests:AddSeveralBytesRepeatedlyAndConsumeSeveralBytesRepeatedly_UsingSlice_Success():this
          -4 (-0.29% of base) : 225427.dasm - Tests.System.Net.MultiArrayBufferTests:AddSeveralBytesRepeatedlyAndConsumeSeveralBytesRepeatedly_UsingSliceWithLength_Success():this
          -1 (-0.18% of base) : 204899.dasm - System.Text.RegularExpressions.Tests.CaptureCollectionTests:ICollection_CopyTo(int)
          -1 (-0.18% of base) : 204923.dasm - System.Text.RegularExpressions.Tests.GroupCollectionTests:ICollection_CopyTo(int)
          -1 (-0.14% of base) : 204945.dasm - System.Text.RegularExpressions.Tests.MatchCollectionTests:ICollection_CopyTo(int)

70 total methods with Code Size differences (14 improved, 56 regressed), 15 unchanged.


@kunalspathak
Copy link
Member

Ubuntu x64 improvements dotnet/perf-autofiling-issues#4220

radekdoulik pushed a commit to radekdoulik/runtime that referenced this pull request Mar 30, 2022
* Loop cloning improvements

Fix various comments

* Remove loop cloning var initialization condition

Assume that any pre-existing initialization is ok. Check it against
zero if necessary. Const inits remain as before.

Lots of diffs due to more cloning for cases of `for (i = expression...`
where `expression` is not just a constant or local var.

* Feedback
@AndyAyersMS
Copy link
Member

newplot - 2022-03-30T150423 956

@ghost ghost locked as resolved and limited conversation to collaborators Apr 30, 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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants