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

Do not align cloned loops #48090

Merged
merged 2 commits into from
Feb 11, 2021
Merged

Conversation

kunalspathak
Copy link
Member

In my benchmark stability analysis post "loop alignment" work, I found out an interesting case where we were not removing the align flag from cloned loop if it has calls. More details can be seen in #43227 (comment). However, after careful thought, we should never align cloned loop because they are slower loops that will execute only in rare scenarios. Cloned loops are inserted in the flowgraph after the actual loop. With nested loop or in presence of conditions, its instruction group can stretch inside the method. Now if we decide to align the loop, we need to add the over-estimation compensation NOP or disable VEX prefix encoding until we reach the instruction group having cloned loop. (Details about the compensation code / VEX prefix disabling can be seen in PR description of #44370). Addition of over-estimation compensation can be expensive specially if they get inserted in hot code or loops. Hence, reduce the possibility of adding such compensation by not aligning cloned loop.

Also, with COMPlus_JitDiffableDasm, it is hard to understand how much padding was added by align instruction. Hence output the no. of bytes we padded.

Contributes to #43227.

@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 Feb 10, 2021
@kunalspathak
Copy link
Member Author

Regressions that are seen in certain methods are because we start aligning loops in those method where previously we would have not aligned because of offset where the loop falls.

E.g. BubbleSort.VerifySort , GenericEqualityComparer[[Double]].IndexOf

The improvement in below method that motivated this fix can be seen here.

internal override int IndexOf(T[] array, T value, int startIndex, int count)
{
int endIndex = startIndex + count;
if (value == null)
{
for (int i = startIndex; i < endIndex; i++)
{
if (array[i] == null) return i;
}
}
else
{
for (int i = startIndex; i < endIndex; i++)
{
if (array[i] != null && array[i].Equals(value)) return i;
}
}
return -1;

Libraries windows x64 superpmi


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 114916
Total bytes of diff: 114115
Total bytes of delta: -801 (-0.70% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
           6 : 19387.dasm (2.71% of base)
           4 : 138706.dasm (2.78% of base)
           3 : 169308.dasm (0.35% of base)
           3 : 169315.dasm (0.40% of base)

Top file improvements (bytes):
         -28 : 171915.dasm (-6.05% of base)
         -23 : 81338.dasm (-14.84% of base)
         -20 : 172281.dasm (-0.43% of base)
         -19 : 217443.dasm (-0.75% of base)
         -18 : 171386.dasm (-7.96% of base)
         -18 : 38831.dasm (-5.42% of base)
         -16 : 11012.dasm (-3.11% of base)
         -16 : 231261.dasm (-1.25% of base)
         -16 : 148436.dasm (-1.87% of base)
         -16 : 223469.dasm (-2.56% of base)
         -15 : 16969.dasm (-7.50% of base)
         -14 : 100949.dasm (-2.78% of base)
         -14 : 81371.dasm (-2.78% of base)
         -13 : 175863.dasm (-1.49% of base)
         -13 : 236523.dasm (-0.80% of base)
         -13 : 137608.dasm (-0.89% of base)
         -13 : 218557.dasm (-2.37% of base)
         -12 : 168743.dasm (-2.11% of base)
         -12 : 200606.dasm (-1.36% of base)
         -11 : 217555.dasm (-3.37% of base)

113 total files with Code Size differences (109 improved, 4 regressed), 67 unchanged.

Top method regressions (bytes):
           6 ( 2.71% of base) : 19387.dasm - System.Collections.Generic.GenericEqualityComparer`1[Double][System.Double]:IndexOf(System.Double[],double,int,int):int:this
           4 ( 2.78% of base) : 138706.dasm - Microsoft.CSharp.RuntimeBinder.Syntax.NameTable:ComputeHashCode(System.String,int):int
           3 ( 0.35% of base) : 169308.dasm - System.Data.DataKey:.ctor(System.Data.DataColumn[],bool):this
           3 ( 0.40% of base) : 169315.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],bool):this

Top method improvements (bytes):
         -28 (-6.05% of base) : 171915.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
         -23 (-14.84% of base) : 81338.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:SameSet(System.Int32[],System.Int32[]):bool:this
         -20 (-0.43% of base) : 172281.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,bool,System.Data.DataColumn,System.Object):System.Object[]:this
         -19 (-0.75% of base) : 217443.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this
         -18 (-7.96% of base) : 171386.dasm - System.Data.SqlTypes.SqlDecimal:GetHashCode():int:this
         -18 (-5.42% of base) : 38831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteTypesWithoutModifiers(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -16 (-3.11% of base) : 11012.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer(System.Collections.Generic.IComparer`1[__Canon],System.Collections.Generic.IComparer`1[__Canon],System.Int64[],System.__Canon[])
         -16 (-1.25% of base) : 231261.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this
         -16 (-1.87% of base) : 148436.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,System.Int32[]):this
         -16 (-2.56% of base) : 223469.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,System.Int32[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Int32[]):this
         -15 (-7.50% of base) : 16969.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task`1[System.Byte][]):System.Threading.Tasks.Task`1[[System.Byte[], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
         -14 (-2.78% of base) : 100949.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String
         -14 (-2.78% of base) : 81371.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String
         -13 (-1.49% of base) : 175863.dasm - System.Data.OleDb.OleDbDataReader:GetRowValue():this
         -13 (-0.80% of base) : 236523.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
         -13 (-0.89% of base) : 137608.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetTransitions(System.Byte[],byref):System.Collections.Generic.Dictionary`2[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[ILCompiler.Reflection.ReadyToRun.BaseGcTransition, ILCompiler.Reflection.ReadyToRun, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
         -13 (-2.37% of base) : 218557.dasm - Container:Resize():this
         -12 (-2.11% of base) : 168743.dasm - System.Data.ConstraintCollection:BaseGroupSwitch(System.Data.Constraint[],int,System.Data.Constraint[],int):this
         -12 (-1.36% of base) : 200606.dasm - Helpers:GetCharSetValueFromHeader(System.String):System.String
         -11 (-3.37% of base) : 217555.dasm - System.Reflection.MetadataLoadContext:TryGetConstructor(int,System.Reflection.TypeLoading.CoreType[]):System.Reflection.ConstructorInfo:this

Top method regressions (percentages):
           4 ( 2.78% of base) : 138706.dasm - Microsoft.CSharp.RuntimeBinder.Syntax.NameTable:ComputeHashCode(System.String,int):int
           6 ( 2.71% of base) : 19387.dasm - System.Collections.Generic.GenericEqualityComparer`1[Double][System.Double]:IndexOf(System.Double[],double,int,int):int:this
           3 ( 0.40% of base) : 169315.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],bool):this
           3 ( 0.35% of base) : 169308.dasm - System.Data.DataKey:.ctor(System.Data.DataColumn[],bool):this

Top method improvements (percentages):
         -23 (-14.84% of base) : 81338.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:SameSet(System.Int32[],System.Int32[]):bool:this
         -18 (-7.96% of base) : 171386.dasm - System.Data.SqlTypes.SqlDecimal:GetHashCode():int:this
         -15 (-7.50% of base) : 16969.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task`1[System.Byte][]):System.Threading.Tasks.Task`1[[System.Byte[], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
          -9 (-6.25% of base) : 139641.dasm - TypeArrayKey:Equals(TypeArrayKey):bool:this
          -9 (-6.21% of base) : 170845.dasm - System.Data.RelatedView:CompareArray(System.Object[],System.Object[]):bool:this
         -28 (-6.05% of base) : 171915.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
          -7 (-5.93% of base) : 122461.dasm - System.Xml.ValidateNames:ParseNmtoken(System.String,int):int
          -8 (-5.48% of base) : 78413.dasm - Roslyn.Utilities.ArrayExtensions:ValueEquals(System.UInt32[],System.UInt32[]):bool
         -10 (-5.46% of base) : 101906.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcess:CheckJitTables():this
         -10 (-5.46% of base) : 82419.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcess:CheckJitTables():this
         -18 (-5.42% of base) : 38831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteTypesWithoutModifiers(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -11 (-5.19% of base) : 19369.dasm - System.Collections.Generic.EqualityComparer`1[Double][System.Double]:IndexOf(System.Double[],double,int,int):int:this
          -7 (-5.11% of base) : 178431.dasm - System.Diagnostics.NtProcessManager:GetProcessIds(System.String,bool):System.Int32[]
          -7 (-5.11% of base) : 43314.dasm - WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode][]):System.Int32[]
          -7 (-4.73% of base) : 38338.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:TypeParametersMatchTypeArguments(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):bool
          -7 (-4.40% of base) : 32802.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
          -6 (-4.38% of base) : 78657.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -6 (-4.38% of base) : 78653.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
          -6 (-4.05% of base) : 138707.dasm - Microsoft.CSharp.RuntimeBinder.Syntax.NameTable:Equals(System.String,System.String,int):bool
         -11 (-3.87% of base) : 38835.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this

113 total methods with Code Size differences (109 improved, 4 regressed), 67 unchanged.



Summary of Allocation Size diffs:
(Lower is better)

Total bytes of base: 115507
Total bytes of diff: 114383
Total bytes of delta: -1124 (-0.97% of base)
    diff is an improvement.
Detail diffs


Top file improvements (bytes):
         -28 : 171915.dasm (-6.05% of base)
         -23 : 81338.dasm (-14.84% of base)
         -20 : 172281.dasm (-0.43% of base)
         -19 : 217443.dasm (-0.75% of base)
         -18 : 38831.dasm (-5.42% of base)
         -16 : 174534.dasm (-0.80% of base)
         -16 : 11012.dasm (-3.11% of base)
         -16 : 231261.dasm (-1.25% of base)
         -16 : 148436.dasm (-1.87% of base)
         -16 : 171386.dasm (-7.08% of base)
         -16 : 223469.dasm (-2.56% of base)
         -15 : 16969.dasm (-7.50% of base)
         -14 : 100949.dasm (-2.78% of base)
         -14 : 81371.dasm (-2.78% of base)
         -13 : 236523.dasm (-0.80% of base)
         -13 : 218557.dasm (-2.37% of base)
         -12 : 168743.dasm (-2.11% of base)
         -12 : 169300.dasm (-6.82% of base)
         -11 : 217555.dasm (-3.37% of base)
         -11 : 223386.dasm (-3.13% of base)

175 total files with Allocation Size differences (175 improved, 0 regressed), 5 unchanged.

Top method improvements (bytes):
         -28 (-6.05% of base) : 171915.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
         -23 (-14.84% of base) : 81338.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:SameSet(System.Int32[],System.Int32[]):bool:this
         -20 (-0.43% of base) : 172281.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,bool,System.Data.DataColumn,System.Object):System.Object[]:this
         -19 (-0.75% of base) : 217443.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this
         -18 (-5.42% of base) : 38831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteTypesWithoutModifiers(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -16 (-0.80% of base) : 174534.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(QualifiedTableName,bool):int:this
         -16 (-3.11% of base) : 11012.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer(System.Collections.Generic.IComparer`1[__Canon],System.Collections.Generic.IComparer`1[__Canon],System.Int64[],System.__Canon[])
         -16 (-1.25% of base) : 231261.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this
         -16 (-1.87% of base) : 148436.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,System.Int32[]):this
         -16 (-7.08% of base) : 171386.dasm - System.Data.SqlTypes.SqlDecimal:GetHashCode():int:this
         -16 (-2.56% of base) : 223469.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,System.Int32[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Int32[]):this
         -15 (-7.50% of base) : 16969.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task`1[System.Byte][]):System.Threading.Tasks.Task`1[[System.Byte[], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
         -14 (-2.78% of base) : 100949.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String
         -14 (-2.78% of base) : 81371.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String
         -13 (-0.80% of base) : 236523.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
         -13 (-2.37% of base) : 218557.dasm - Container:Resize():this
         -12 (-2.11% of base) : 168743.dasm - System.Data.ConstraintCollection:BaseGroupSwitch(System.Data.Constraint[],int,System.Data.Constraint[],int):this
         -12 (-6.82% of base) : 169300.dasm - System.Data.DataKey:Equals(System.Data.DataKey):bool:this
         -11 (-3.37% of base) : 217555.dasm - System.Reflection.MetadataLoadContext:TryGetConstructor(int,System.Reflection.TypeLoading.CoreType[]):System.Reflection.ConstructorInfo:this
         -11 (-3.13% of base) : 223386.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteRectangleArray(System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,int,System.Int32[],System.Int32[]):this

Top method improvements (percentages):
         -23 (-14.84% of base) : 81338.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:SameSet(System.Int32[],System.Int32[]):bool:this
         -15 (-7.50% of base) : 16969.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task`1[System.Byte][]):System.Threading.Tasks.Task`1[[System.Byte[], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
         -16 (-7.08% of base) : 171386.dasm - System.Data.SqlTypes.SqlDecimal:GetHashCode():int:this
         -12 (-6.82% of base) : 169300.dasm - System.Data.DataKey:Equals(System.Data.DataKey):bool:this
          -9 (-6.25% of base) : 139641.dasm - TypeArrayKey:Equals(TypeArrayKey):bool:this
          -9 (-6.21% of base) : 170845.dasm - System.Data.RelatedView:CompareArray(System.Object[],System.Object[]):bool:this
         -28 (-6.05% of base) : 171915.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
          -7 (-5.93% of base) : 122461.dasm - System.Xml.ValidateNames:ParseNmtoken(System.String,int):int
          -8 (-5.48% of base) : 78413.dasm - Roslyn.Utilities.ArrayExtensions:ValueEquals(System.UInt32[],System.UInt32[]):bool
         -10 (-5.46% of base) : 101906.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcess:CheckJitTables():this
         -10 (-5.46% of base) : 82419.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcess:CheckJitTables():this
         -18 (-5.42% of base) : 38831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteTypesWithoutModifiers(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
          -7 (-5.11% of base) : 178431.dasm - System.Diagnostics.NtProcessManager:GetProcessIds(System.String,bool):System.Int32[]
          -7 (-5.11% of base) : 43314.dasm - WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode][]):System.Int32[]
          -7 (-4.73% of base) : 38338.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:TypeParametersMatchTypeArguments(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):bool
          -7 (-4.40% of base) : 32802.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
          -6 (-4.38% of base) : 78657.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -6 (-4.38% of base) : 78653.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
          -6 (-4.05% of base) : 138707.dasm - Microsoft.CSharp.RuntimeBinder.Syntax.NameTable:Equals(System.String,System.String,int):bool
         -11 (-3.87% of base) : 38835.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this

175 total methods with Allocation Size differences (175 improved, 0 regressed), 5 unchanged.



Summary of Instruction Count diffs:
(Lower is better)

Total Instructions of base: 31806
Total Instructions of diff: 31586
Total Instructions of delta: -220 (-0.69% of base)
    diff is an improvement.
Detail diffs


Top file improvements (Instructions):
          -4 : 199360.dasm (-0.48% of base)
          -4 : 217443.dasm (-0.59% of base)
          -3 : 170136.dasm (-1.67% of base)
          -3 : 174534.dasm (-0.60% of base)
          -3 : 171915.dasm (-2.01% of base)
          -3 : 175857.dasm (-0.78% of base)
          -3 : 168743.dasm (-1.62% of base)
          -3 : 236272.dasm (-2.04% of base)
          -3 : 133226.dasm (-0.34% of base)
          -3 : 168942.dasm (-1.44% of base)
          -2 : 7556.dasm (-0.96% of base)
          -2 : 23182.dasm (-1.05% of base)
          -2 : 73646.dasm (-1.83% of base)
          -2 : 170216.dasm (-0.46% of base)
          -2 : 192653.dasm (-0.60% of base)
          -2 : 217426.dasm (-0.90% of base)
          -2 : 231261.dasm (-0.56% of base)
          -2 : 23181.dasm (-1.45% of base)
          -2 : 20653.dasm (-2.86% of base)
          -2 : 147576.dasm (-1.20% of base)

180 total files with Instruction Count differences (180 improved, 0 regressed), 0 unchanged.

Top method improvements (Instructions):
          -4 (-0.48% of base) : 199360.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,byref,byref):System.Object
          -4 (-0.59% of base) : 217443.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this
          -3 (-1.67% of base) : 170136.dasm - System.Data.DataTableCollection:BaseGroupSwitch(System.Data.DataTable[],int,System.Data.DataTable[],int):this
          -3 (-0.60% of base) : 174534.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(QualifiedTableName,bool):int:this
          -3 (-2.01% of base) : 171915.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
          -3 (-0.78% of base) : 175857.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(bool):System.Data.OleDb.Bindings[]:this
          -3 (-1.62% of base) : 168743.dasm - System.Data.ConstraintCollection:BaseGroupSwitch(System.Data.Constraint[],int,System.Data.Constraint[],int):this
          -3 (-2.04% of base) : 236272.dasm - System.Text.RegularExpressions.Match:TidyBalancing():this
          -3 (-0.34% of base) : 133226.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):bool
          -3 (-1.44% of base) : 168942.dasm - System.Data.DataColumnCollection:BaseGroupSwitch(System.Data.DataColumn[],int,System.Data.DataColumn[],int):this
          -2 (-0.96% of base) : 7556.dasm - Microsoft.FSharp.Reflection.Impl:getTupleConstructorMethod(System.Type):System.Reflection.ConstructorInfo
          -2 (-1.05% of base) : 23182.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this
          -2 (-1.83% of base) : 73646.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(Microsoft.CodeAnalysis.BitVector):bool:this
          -2 (-0.46% of base) : 170216.dasm - System.Data.DataView:ToTable(System.String,bool,System.String[]):System.Data.DataTable:this
          -2 (-0.60% of base) : 192653.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMemberInitExpression(System.Linq.Expressions.Expression,int):Result:this
          -2 (-0.90% of base) : 217426.dasm - MethodInfoEqualityComparer:Equals(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool:this
          -2 (-0.56% of base) : 231261.dasm - System.ServiceProcess.ServiceController:Start(System.String[]):this
          -2 (-1.45% of base) : 23181.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedSingleLineComment(System.String):this
          -2 (-2.86% of base) : 20653.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
          -2 (-1.20% of base) : 147576.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int

Top method improvements (percentages):
          -2 (-2.86% of base) : 20653.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
          -1 (-2.86% of base) : 122461.dasm - System.Xml.ValidateNames:ParseNmtoken(System.String,int):int
          -1 (-2.70% of base) : 172275.dasm - System.Data.ProviderBase.SchemaMapping:CreateIndexMap(int,int):System.Int32[]:this
          -1 (-2.50% of base) : 178431.dasm - System.Diagnostics.NtProcessManager:GetProcessIds(System.String,bool):System.Int32[]
          -1 (-2.33% of base) : 78657.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -1 (-2.33% of base) : 78653.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
          -1 (-2.27% of base) : 138707.dasm - Microsoft.CSharp.RuntimeBinder.Syntax.NameTable:Equals(System.String,System.String,int):bool
          -1 (-2.22% of base) : 43314.dasm - WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode][]):System.Int32[]
          -1 (-2.17% of base) : 38338.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:TypeParametersMatchTypeArguments(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):bool
          -1 (-2.13% of base) : 78841.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
          -1 (-2.08% of base) : 81338.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:SameSet(System.Int32[],System.Int32[]):bool:this
          -3 (-2.04% of base) : 236272.dasm - System.Text.RegularExpressions.Match:TidyBalancing():this
          -1 (-2.04% of base) : 78413.dasm - Roslyn.Utilities.ArrayExtensions:ValueEquals(System.UInt32[],System.UInt32[]):bool
          -1 (-2.04% of base) : 170845.dasm - System.Data.RelatedView:CompareArray(System.Object[],System.Object[]):bool:this
          -3 (-2.01% of base) : 171915.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
          -1 (-2.00% of base) : 101906.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcess:CheckJitTables():this
          -1 (-2.00% of base) : 19383.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int32][System.Int32]:IndexOf(System.Int32[],int,int,int):int:this
          -1 (-2.00% of base) : 82419.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcess:CheckJitTables():this
          -1 (-2.00% of base) : 19395.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int64][System.Int64]:IndexOf(System.Int64[],long,int,int):int:this
          -1 (-2.00% of base) : 139641.dasm - TypeArrayKey:Equals(TypeArrayKey):bool:this

180 total methods with Instruction Count differences (180 improved, 0 regressed), 0 unchanged.


Microbenchmarks windows x64 superpmi


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 54491
Total bytes of diff: 54054
Total bytes of delta: -437 (-0.80% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
           7 : 25597.dasm (0.85% of base)
           4 : 22896.dasm (2.90% of base)

Top file improvements (bytes):
         -41 : 15244.dasm (-3.43% of base)
         -35 : 12600.dasm (-1.83% of base)
         -34 : 19531.dasm (-5.18% of base)
         -23 : 25212.dasm (-0.78% of base)
         -22 : 15246.dasm (-0.63% of base)
         -15 : 2616.dasm (-0.14% of base)
         -15 : 5933.dasm (-7.50% of base)
         -14 : 2725.dasm (-4.09% of base)
         -13 : 12593.dasm (-8.90% of base)
         -13 : 6661.dasm (-0.80% of base)
         -13 : 13180.dasm (-8.90% of base)
         -12 : 25601.dasm (-3.95% of base)
         -12 : 22063.dasm (-2.16% of base)
         -11 : 17376.dasm (-0.73% of base)
         -11 : 10584.dasm (-10.00% of base)
         -11 : 13187.dasm (-0.57% of base)
         -10 : 16642.dasm (-6.49% of base)
         -10 : 23659.dasm (-1.89% of base)
          -9 : 26024.dasm (-2.92% of base)
          -9 : 6634.dasm (-2.65% of base)

46 total files with Code Size differences (44 improved, 2 regressed), 25 unchanged.

Top method regressions (bytes):
           7 ( 0.85% of base) : 25597.dasm - Benchstone.BenchF.InProd:Test():bool:this
           4 ( 2.90% of base) : 22896.dasm - Benchstone.BenchI.BubbleSort:VerifySort(System.Int32[],int):bool

Top method improvements (bytes):
         -41 (-3.43% of base) : 15244.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
         -35 (-1.83% of base) : 12600.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -34 (-5.18% of base) : 19531.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this
         -23 (-0.78% of base) : 25212.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -22 (-0.63% of base) : 15246.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
         -15 (-0.14% of base) : 2616.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
         -15 (-7.50% of base) : 5933.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task[]):System.Threading.Tasks.Task
         -14 (-4.09% of base) : 2725.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
         -13 (-8.90% of base) : 12593.dasm - AssignJagged:DoAssignIteration(System.Int32[][][],int):long
         -13 (-0.80% of base) : 6661.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
         -13 (-8.90% of base) : 13180.dasm - AssignRect:DoAssignIteration(System.Int32[,][],int):long
         -12 (-3.95% of base) : 25601.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
         -12 (-2.16% of base) : 22063.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
         -11 (-0.73% of base) : 17376.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[__Canon,__Canon][System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[__Canon],int):bool:this
         -11 (-10.00% of base) : 10584.dasm - EMFloat:IsMantissaZero(System.Char[]):bool
         -11 (-0.57% of base) : 13187.dasm - AssignRect:second_assignments(System.Int32[,],System.Int16[,])
         -10 (-6.49% of base) : 16642.dasm - System.Tests.Perf_String:IndexerCheckBoundCheckHoist():int:this
         -10 (-1.89% of base) : 23659.dasm - BenchmarksGame.SpectralNorm_1:Bench(int):double:this
          -9 (-2.92% of base) : 26024.dasm - NumericSortJagged:LoadNumArrayWithRand(System.Int32[][],int,int)
          -9 (-2.65% of base) : 6634.dasm - System.Text.Json.Tests.Perf_Strings:GetString(System.Random,int,int,int):System.String

Top method regressions (percentages):
           4 ( 2.90% of base) : 22896.dasm - Benchstone.BenchI.BubbleSort:VerifySort(System.Int32[],int):bool
           7 ( 0.85% of base) : 25597.dasm - Benchstone.BenchF.InProd:Test():bool:this

Top method improvements (percentages):
         -11 (-10.00% of base) : 10584.dasm - EMFloat:IsMantissaZero(System.Char[]):bool
         -13 (-8.90% of base) : 12593.dasm - AssignJagged:DoAssignIteration(System.Int32[][][],int):long
         -13 (-8.90% of base) : 13180.dasm - AssignRect:DoAssignIteration(System.Int32[,][],int):long
         -15 (-7.50% of base) : 5933.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task[]):System.Threading.Tasks.Task
         -10 (-6.49% of base) : 16642.dasm - System.Tests.Perf_String:IndexerCheckBoundCheckHoist():int:this
          -7 (-5.93% of base) : 9579.dasm - System.Xml.ValidateNames:ParseNmtoken(System.String,int):int
          -8 (-5.80% of base) : 12594.dasm - AssignJagged:LoadAssignArrayWithRand(System.Int32[][][],int)
          -8 (-5.80% of base) : 13181.dasm - AssignRect:LoadAssignArrayWithRand(System.Int32[,][],int)
         -34 (-5.18% of base) : 19531.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this
          -6 (-4.38% of base) : 16798.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -6 (-4.17% of base) : 21711.dasm - SciMark2.kernel:RandomVector(int,SciMark2.Random):System.Double[]
         -14 (-4.09% of base) : 2725.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
         -12 (-3.95% of base) : 25601.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
          -6 (-3.75% of base) : 21582.dasm - Benchstone.BenchI.Array1:Test():bool:this
         -41 (-3.43% of base) : 15244.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
          -9 (-2.92% of base) : 26024.dasm - NumericSortJagged:LoadNumArrayWithRand(System.Int32[][],int,int)
          -4 (-2.67% of base) : 17627.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
          -9 (-2.65% of base) : 6634.dasm - System.Text.Json.Tests.Perf_Strings:GetString(System.Random,int,int,int):System.String
          -4 (-2.37% of base) : 8851.dasm - Benchstone.BenchI.QuickSort:Test():bool:this
          -6 (-2.19% of base) : 22153.dasm - SciMark2.kernel:RandomMatrix(int,int,SciMark2.Random):System.Double[][]

46 total methods with Code Size differences (44 improved, 2 regressed), 25 unchanged.



Summary of Allocation Size diffs:
(Lower is better)

Total bytes of base: 54788
Total bytes of diff: 54280
Total bytes of delta: -508 (-0.93% of base)
    diff is an improvement.
Detail diffs


Top file improvements (bytes):
         -35 : 12600.dasm (-1.83% of base)
         -29 : 25212.dasm (-0.97% of base)
         -22 : 15246.dasm (-0.63% of base)
         -18 : 13187.dasm (-0.93% of base)
         -16 : 22063.dasm (-2.86% of base)
         -15 : 2616.dasm (-0.14% of base)
         -15 : 5933.dasm (-7.50% of base)
         -13 : 12593.dasm (-8.90% of base)
         -13 : 6661.dasm (-0.80% of base)
         -13 : 13180.dasm (-8.90% of base)
         -12 : 19531.dasm (-1.82% of base)
         -11 : 17376.dasm (-0.73% of base)
         -11 : 10584.dasm (-10.00% of base)
         -11 : 15244.dasm (-0.91% of base)
         -11 : 25599.dasm (-3.50% of base)
         -10 : 2725.dasm (-2.92% of base)
         -10 : 16642.dasm (-6.49% of base)
          -9 : 26024.dasm (-2.92% of base)
          -9 : 6634.dasm (-2.65% of base)
          -9 : 2102.dasm (-0.45% of base)

67 total files with Allocation Size differences (67 improved, 0 regressed), 4 unchanged.

Top method improvements (bytes):
         -35 (-1.83% of base) : 12600.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -29 (-0.97% of base) : 25212.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -22 (-0.63% of base) : 15246.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
         -18 (-0.93% of base) : 13187.dasm - AssignRect:second_assignments(System.Int32[,],System.Int16[,])
         -16 (-2.86% of base) : 22063.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
         -15 (-0.14% of base) : 2616.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
         -15 (-7.50% of base) : 5933.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task[]):System.Threading.Tasks.Task
         -13 (-8.90% of base) : 12593.dasm - AssignJagged:DoAssignIteration(System.Int32[][][],int):long
         -13 (-0.80% of base) : 6661.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
         -13 (-8.90% of base) : 13180.dasm - AssignRect:DoAssignIteration(System.Int32[,][],int):long
         -12 (-1.82% of base) : 19531.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this
         -11 (-0.73% of base) : 17376.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[__Canon,__Canon][System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[__Canon],int):bool:this
         -11 (-10.00% of base) : 10584.dasm - EMFloat:IsMantissaZero(System.Char[]):bool
         -11 (-0.91% of base) : 15244.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
         -11 (-3.50% of base) : 25599.dasm - Benchstone.BenchF.InProd:InitMatrix(System.Double[][])
         -10 (-2.92% of base) : 2725.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
         -10 (-6.49% of base) : 16642.dasm - System.Tests.Perf_String:IndexerCheckBoundCheckHoist():int:this
          -9 (-2.92% of base) : 26024.dasm - NumericSortJagged:LoadNumArrayWithRand(System.Int32[][],int,int)
          -9 (-2.65% of base) : 6634.dasm - System.Text.Json.Tests.Perf_Strings:GetString(System.Random,int,int,int):System.String
          -9 (-0.45% of base) : 2102.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this

Top method improvements (percentages):
         -11 (-10.00% of base) : 10584.dasm - EMFloat:IsMantissaZero(System.Char[]):bool
         -13 (-8.90% of base) : 12593.dasm - AssignJagged:DoAssignIteration(System.Int32[][][],int):long
         -13 (-8.90% of base) : 13180.dasm - AssignRect:DoAssignIteration(System.Int32[,][],int):long
         -15 (-7.50% of base) : 5933.dasm - System.Threading.Tasks.Task:WhenAll(System.Threading.Tasks.Task[]):System.Threading.Tasks.Task
         -10 (-6.49% of base) : 16642.dasm - System.Tests.Perf_String:IndexerCheckBoundCheckHoist():int:this
          -7 (-5.93% of base) : 9579.dasm - System.Xml.ValidateNames:ParseNmtoken(System.String,int):int
          -8 (-5.80% of base) : 12594.dasm - AssignJagged:LoadAssignArrayWithRand(System.Int32[][][],int)
          -8 (-5.80% of base) : 13181.dasm - AssignRect:LoadAssignArrayWithRand(System.Int32[,][],int)
          -6 (-4.38% of base) : 16798.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -6 (-3.75% of base) : 21582.dasm - Benchstone.BenchI.Array1:Test():bool:this
         -11 (-3.50% of base) : 25599.dasm - Benchstone.BenchF.InProd:InitMatrix(System.Double[][])
          -5 (-3.45% of base) : 21711.dasm - SciMark2.kernel:RandomVector(int,SciMark2.Random):System.Double[]
          -8 (-3.38% of base) : 667.dasm - System.Linq.EnumerableSorter`2[__Canon,Int32][System.__Canon,System.Int32]:ComputeKeys(System.__Canon[],int):this
         -10 (-2.92% of base) : 2725.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
          -9 (-2.92% of base) : 26024.dasm - NumericSortJagged:LoadNumArrayWithRand(System.Int32[][],int,int)
         -16 (-2.86% of base) : 22063.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
          -4 (-2.67% of base) : 17627.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
          -9 (-2.65% of base) : 6634.dasm - System.Text.Json.Tests.Perf_Strings:GetString(System.Random,int,int,int):System.String
          -4 (-2.47% of base) : 23058.dasm - System.Globalization.JapaneseCalendar:EraNames():System.String[]
          -4 (-2.47% of base) : 23059.dasm - System.Globalization.JapaneseCalendar:AbbrevEraNames():System.String[]

67 total methods with Allocation Size differences (67 improved, 0 regressed), 4 unchanged.



Summary of Instruction Count diffs:
(Lower is better)

Total Instructions of base: 14989
Total Instructions of diff: 14836
Total Instructions of delta: -153 (-1.02% of base)
    diff is an improvement.
Detail diffs


Top file improvements (Instructions):
         -12 : 25212.dasm (-1.52% of base)
         -12 : 12600.dasm (-2.33% of base)
         -11 : 15246.dasm (-1.29% of base)
         -11 : 13187.dasm (-2.03% of base)
          -6 : 2616.dasm (-0.23% of base)
          -6 : 15245.dasm (-1.96% of base)
          -4 : 17376.dasm (-0.99% of base)
          -4 : 21700.dasm (-1.17% of base)
          -4 : 2102.dasm (-0.75% of base)
          -3 : 15244.dasm (-0.87% of base)
          -3 : 25597.dasm (-1.44% of base)
          -3 : 23659.dasm (-1.84% of base)
          -3 : 23341.dasm (-0.89% of base)
          -2 : 10703.dasm (-0.34% of base)
          -2 : 18035.dasm (-0.67% of base)
          -2 : 22060.dasm (-1.12% of base)
          -2 : 9187.dasm (-1.68% of base)
          -2 : 12628.dasm (-1.20% of base)
          -2 : 22155.dasm (-1.07% of base)
          -2 : 9073.dasm (-2.04% of base)

71 total files with Instruction Count differences (71 improved, 0 regressed), 0 unchanged.

Top method improvements (Instructions):
         -12 (-1.52% of base) : 25212.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
         -12 (-2.33% of base) : 12600.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
         -11 (-1.29% of base) : 15246.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
         -11 (-2.03% of base) : 13187.dasm - AssignRect:second_assignments(System.Int32[,],System.Int16[,])
          -6 (-0.23% of base) : 2616.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
          -6 (-1.96% of base) : 15245.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
          -4 (-0.99% of base) : 17376.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[__Canon,__Canon][System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[__Canon],int):bool:this
          -4 (-1.17% of base) : 21700.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this
          -4 (-0.75% of base) : 2102.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this
          -3 (-0.87% of base) : 15244.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
          -3 (-1.44% of base) : 25597.dasm - Benchstone.BenchF.InProd:Test():bool:this
          -3 (-1.84% of base) : 23659.dasm - BenchmarksGame.SpectralNorm_1:Bench(int):double:this
          -3 (-0.89% of base) : 23341.dasm - SciMark2.LU:factor(System.Double[][],System.Int32[]):int
          -2 (-0.34% of base) : 10703.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this
          -2 (-0.67% of base) : 18035.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArray(System.Collections.Immutable.ImmutableArray`1[__Canon],System.Func`2[__Canon,Boolean]):System.Collections.Immutable.ImmutableArray`1[__Canon]
          -2 (-1.12% of base) : 22060.dasm - Benchstone.BenchI.Array2:Bench(int):bool
          -2 (-1.68% of base) : 9187.dasm - Sigil.Impl.LinqAlternative:_Order(System.Collections.Generic.IEnumerable`1[KeyValuePair`2],Sigil.Impl.SigilFunc`2[KeyValuePair`2,Int32],System.Collections.Generic.IComparer`1[Int32]):System.Collections.Generic.IEnumerable`1[KeyValuePair`2]
          -2 (-1.20% of base) : 12628.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int
          -2 (-1.07% of base) : 22155.dasm - SciMark2.SOR:execute(double,System.Double[][],int)
          -2 (-2.04% of base) : 9073.dasm - Sigil.Impl.LinqAlternative:_Order(System.Collections.Generic.IEnumerable`1[Int32],Sigil.Impl.SigilFunc`2[Int32,Int32],System.Collections.Generic.IComparer`1[Int32]):System.Collections.Generic.IEnumerable`1[Int32]

Top method improvements (percentages):
          -1 (-3.12% of base) : 10584.dasm - EMFloat:IsMantissaZero(System.Char[]):bool
          -1 (-2.86% of base) : 9579.dasm - System.Xml.ValidateNames:ParseNmtoken(System.String,int):int
         -12 (-2.33% of base) : 12600.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
          -1 (-2.33% of base) : 16642.dasm - System.Tests.Perf_String:IndexerCheckBoundCheckHoist():int:this
          -1 (-2.33% of base) : 16798.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
          -1 (-2.13% of base) : 17627.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
          -1 (-2.04% of base) : 22896.dasm - Benchstone.BenchI.BubbleSort:VerifySort(System.Int32[],int):bool
          -2 (-2.04% of base) : 9073.dasm - Sigil.Impl.LinqAlternative:_Order(System.Collections.Generic.IEnumerable`1[Int32],Sigil.Impl.SigilFunc`2[Int32,Int32],System.Collections.Generic.IComparer`1[Int32]):System.Collections.Generic.IEnumerable`1[Int32]
          -1 (-2.04% of base) : 21582.dasm - Benchstone.BenchI.Array1:Test():bool:this
         -11 (-2.03% of base) : 13187.dasm - AssignRect:second_assignments(System.Int32[,],System.Int16[,])
          -1 (-1.96% of base) : 12594.dasm - AssignJagged:LoadAssignArrayWithRand(System.Int32[][][],int)
          -1 (-1.96% of base) : 8851.dasm - Benchstone.BenchI.QuickSort:Test():bool:this
          -1 (-1.96% of base) : 13181.dasm - AssignRect:LoadAssignArrayWithRand(System.Int32[,][],int)
          -6 (-1.96% of base) : 15245.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
          -2 (-1.94% of base) : 22062.dasm - Benchstone.BenchI.Array2:Initialize(System.Int32[][][])
          -1 (-1.92% of base) : 12593.dasm - AssignJagged:DoAssignIteration(System.Int32[][][],int):long
          -1 (-1.92% of base) : 21711.dasm - SciMark2.kernel:RandomVector(int,SciMark2.Random):System.Double[]
          -1 (-1.92% of base) : 13180.dasm - AssignRect:DoAssignIteration(System.Int32[,][],int):long
          -1 (-1.89% of base) : 21038.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.UInt32[],int):System.UInt32[]
          -3 (-1.84% of base) : 23659.dasm - BenchmarksGame.SpectralNorm_1:Bench(int):double:this

71 total methods with Instruction Count differences (71 improved, 0 regressed), 0 unchanged.


@kunalspathak
Copy link
Member Author

@dotnet/jit-contrib
@BruceForstall - I was able to use the superpmi collection for microbenchmarks that I collected locally.

@kunalspathak kunalspathak merged commit aa660d5 into dotnet:master Feb 11, 2021
@kunalspathak kunalspathak deleted the noalign-in-cloned branch February 11, 2021 07:43
@ghost ghost locked as resolved and limited conversation to collaborators Mar 13, 2021
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.

None yet

2 participants