-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Change loop cloning conditions codegen #55863
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
Change loop cloning conditions codegen #55863
Conversation
Currently, the loop choice condition blocks are created in a way that creates a confusing flow graph. Restructure them to be simpler, and lay the path for future work. The simpler layout (and, hopefully, code and logic to create them) also lays the groundwork to potentially put the slow path loop in the loop table, if desired, as it creates a "standard" loop header layout. While the flow graph has an extra block or two, there are almost no diffs, as subsequent phases clean up any extras. There are a few diffs where the new layout enables some downstream optimization phases that were stymied by the old layout, but mostly in cases where we leave around dead code slow cloned blocks (a known issue). Also, there are a couple trivial CSE changes.
Add an option, statically determined at compile time,
to generate loop cloning loop choice conditions into one block
per condition instead of using bitwise and operators to always
execute all non-dependent conditions in a single block.
This leads to code size reduction in the condition code, as well
as making it easier to understand.
The code size diffs:
```
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 17558
Total bytes of diff: 17078
Total bytes of delta: -480 (-2.73% of base)
Total relative delta: -1.43
diff is an improvement.
relative diff is an improvement.
```
<details>
<summary>Detail diffs</summary>
```
Top file regressions (bytes):
1 : 18754.dasm (0.06% of base)
Top file improvements (bytes):
-16 : 31113.dasm (-7.17% of base)
-16 : 40108.dasm (-7.17% of base)
-16 : 43345.dasm (-7.17% of base)
-14 : 43459.dasm (-5.65% of base)
-14 : 18564.dasm (-5.71% of base)
-14 : 40710.dasm (-5.65% of base)
-14 : 22079.dasm (-5.71% of base)
-14 : 21398.dasm (-4.35% of base)
-12 : 32181.dasm (-2.96% of base)
-12 : 27914.dasm (-2.96% of base)
-11 : 21558.dasm (-2.96% of base)
-11 : 31345.dasm (-1.76% of base)
-11 : 43478.dasm (-2.89% of base)
-11 : 18979.dasm (-1.98% of base)
-11 : 27800.dasm (-1.90% of base)
-11 : 41744.dasm (-1.40% of base)
-11 : 20855.dasm (-2.86% of base)
-11 : 24360.dasm (-2.86% of base)
-11 : 32081.dasm (-1.90% of base)
-11 : 32206.dasm (-3.67% of base)
42 total files with Code Size differences (41 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
1 ( 0.06% of base) : 18754.dasm - DefaultTypeMap:FindConstructor(ref,ref):ConstructorInfo:this
Top method improvements (bytes):
-16 (-7.17% of base) : 31113.dasm - ObjectEqualityComparer`1:IndexOf(ref,__Canon,int,int):int:this
-16 (-7.17% of base) : 40108.dasm - ObjectEqualityComparer`1:IndexOf(ref,__Canon,int,int):int:this
-16 (-7.17% of base) : 43345.dasm - ObjectEqualityComparer`1:IndexOf(ref,__Canon,int,int):int:this
-14 (-5.65% of base) : 43459.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-5.71% of base) : 18564.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-5.65% of base) : 40710.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-5.71% of base) : 22079.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-4.35% of base) : 21398.dasm - ControllerActionInvoker:PrepareArguments(IDictionary`2,ObjectMethodExecutor):ref
-12 (-2.96% of base) : 32181.dasm - Dictionary`2:CopyTo(ref,int):this
-12 (-2.96% of base) : 27914.dasm - Dictionary`2:CopyTo(ref,int):this
-11 (-2.96% of base) : 21558.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-11 (-1.76% of base) : 31345.dasm - NormalizedRouteValue:GetNormalizedRouteValue(ActionContext,String):String
-11 (-2.89% of base) : 43478.dasm - Dictionary`2:Resize(int,bool):this
-11 (-1.98% of base) : 18979.dasm - Dictionary`2:Resize(int,bool):this
-11 (-1.90% of base) : 27800.dasm - Dictionary`2:AddRange(IEnumerable`1):this
-11 (-1.40% of base) : 41744.dasm - NormalizedRouteValue:GetNormalizedRouteValue(ActionContext,String):String
-11 (-2.86% of base) : 20855.dasm - PoolManager:TryGetValue(String,byref):bool
-11 (-2.86% of base) : 24360.dasm - PoolManager:TryGetValue(String,byref):bool
-11 (-1.90% of base) : 32081.dasm - Dictionary`2:AddRange(IEnumerable`1):this
-11 (-3.67% of base) : 32206.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
Top method regressions (percentages):
1 ( 0.06% of base) : 18754.dasm - DefaultTypeMap:FindConstructor(ref,ref):ConstructorInfo:this
Top method improvements (percentages):
-16 (-7.17% of base) : 31113.dasm - ObjectEqualityComparer`1:IndexOf(ref,__Canon,int,int):int:this
-16 (-7.17% of base) : 40108.dasm - ObjectEqualityComparer`1:IndexOf(ref,__Canon,int,int):int:this
-16 (-7.17% of base) : 43345.dasm - ObjectEqualityComparer`1:IndexOf(ref,__Canon,int,int):int:this
-14 (-5.71% of base) : 18564.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-5.71% of base) : 22079.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-5.65% of base) : 43459.dasm - ValueCollection:CopyTo(ref,int):this
-14 (-5.65% of base) : 40710.dasm - ValueCollection:CopyTo(ref,int):this
-11 (-4.89% of base) : 31151.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-11 (-4.89% of base) : 40674.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-11 (-4.80% of base) : 41746.dasm - RouteValueDictionary:TryFindItem(String,byref):bool:this
-14 (-4.35% of base) : 21398.dasm - ControllerActionInvoker:PrepareArguments(IDictionary`2,ObjectMethodExecutor):ref
-11 (-4.03% of base) : 31344.dasm - RouteValueDictionary:TryGetValue(String,byref):bool:this
-11 (-4.03% of base) : 41745.dasm - RouteValueDictionary:TryGetValue(String,byref):bool:this
-11 (-3.67% of base) : 32206.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-11 (-3.67% of base) : 27948.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-11 (-2.96% of base) : 21558.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-11 (-2.96% of base) : 21223.dasm - EnumerableSorter`2:ComputeKeys(ref,int):this
-12 (-2.96% of base) : 32181.dasm - Dictionary`2:CopyTo(ref,int):this
-12 (-2.96% of base) : 27914.dasm - Dictionary`2:CopyTo(ref,int):this
-11 (-2.95% of base) : 20952.dasm - Dictionary`2:Resize(int,bool):this
42 total methods with Code Size differences (41 improved, 1 regressed), 0 unchanged.
```
</details>
--------------------------------------------------------------------------------
```
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 91853
Total bytes of diff: 88672
Total bytes of delta: -3181 (-3.46% of base)
Total relative delta: -5.66
diff is an improvement.
relative diff is an improvement.
```
<details>
<summary>Detail diffs</summary>
```
Top file regressions (bytes):
77 : 12143.dasm (4.42% of base)
16 : 10056.dasm (1.66% of base)
9 : 17895.dasm (0.62% of base)
8 : 11006.dasm (0.79% of base)
7 : 11614.dasm (0.67% of base)
3 : 22799.dasm (1.43% of base)
3 : 8275.dasm (1.41% of base)
Top file improvements (bytes):
-441 : 14836.dasm (-12.93% of base)
-382 : 24595.dasm (-11.90% of base)
-127 : 14835.dasm (-10.94% of base)
-113 : 2480.dasm (-1.02% of base)
-93 : 14834.dasm (-8.15% of base)
-91 : 10989.dasm (-8.86% of base)
-75 : 6979.dasm (-6.89% of base)
-71 : 14837.dasm (-9.04% of base)
-66 : 3804.dasm (-6.06% of base)
-66 : 7607.dasm (-12.67% of base)
-61 : 23563.dasm (-8.51% of base)
-57 : 15582.dasm (-7.82% of base)
-54 : 21535.dasm (-9.94% of base)
-53 : 23160.dasm (-10.25% of base)
-52 : 25000.dasm (-6.10% of base)
-49 : 2580.dasm (-15.41% of base)
-48 : 21532.dasm (-8.38% of base)
-46 : 12170.dasm (-8.71% of base)
-44 : 8136.dasm (-8.53% of base)
-37 : 25004.dasm (-13.55% of base)
106 total files with Code Size differences (99 improved, 7 regressed), 3 unchanged.
Top method regressions (bytes):
77 ( 4.42% of base) : 12143.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
16 ( 1.66% of base) : 10056.dasm - EMFloat:DivideInternalFPF(byref,byref,byref)
9 ( 0.62% of base) : 17895.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildStoresToTemps(bool,System.Collections.Immutable.ImmutableArray`1[Int32],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[RefKind],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool,Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[RefKind],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
8 ( 0.79% of base) : 11006.dasm - EMFloatClass:DivideInternalFPF(InternalFPF,InternalFPF,InternalFPF)
7 ( 0.67% of base) : 11614.dasm - Fourier:DoFPUTransIteration(System.Double[],System.Double[],int):long
3 ( 1.43% of base) : 22799.dasm - Benchstone.BenchI.BubbleSort2:Test():bool:this
3 ( 1.41% of base) : 8275.dasm - Benchstone.BenchI.QuickSort:Test():bool:this
Top method improvements (bytes):
-441 (-12.93% of base) : 14836.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
-382 (-11.90% of base) : 24595.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
-127 (-10.94% of base) : 14835.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
-113 (-1.02% of base) : 2480.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
-93 (-8.15% of base) : 14834.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
-91 (-8.86% of base) : 10989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):System.Int32[]:this
-75 (-6.89% of base) : 6979.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Type[],System.Object[]):int
-71 (-9.04% of base) : 14837.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
-66 (-6.06% of base) : 3804.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this
-66 (-12.67% of base) : 7607.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
-61 (-8.51% of base) : 23563.dasm - SciMark2.SOR:execute(double,System.Double[][],int)
-57 (-7.82% of base) : 15582.dasm - SciMark2.kernel:CopyMatrix(System.Double[][],System.Double[][])
-54 (-9.94% of base) : 21535.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
-53 (-10.25% of base) : 23160.dasm - BenchmarksGame.SpectralNorm_1:Bench(int):double:this
-52 (-6.10% of base) : 25000.dasm - Benchstone.BenchF.InProd:Test():bool:this
-49 (-15.41% of base) : 2580.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
-48 (-8.38% of base) : 21532.dasm - Benchstone.BenchI.Array2:Bench(int):bool
-46 (-8.71% of base) : 12170.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int
-44 (-8.53% of base) : 8136.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(System.Char[],int,int,byref):int
-37 (-13.55% of base) : 25004.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
Top method regressions (percentages):
77 ( 4.42% of base) : 12143.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
16 ( 1.66% of base) : 10056.dasm - EMFloat:DivideInternalFPF(byref,byref,byref)
3 ( 1.43% of base) : 22799.dasm - Benchstone.BenchI.BubbleSort2:Test():bool:this
3 ( 1.41% of base) : 8275.dasm - Benchstone.BenchI.QuickSort:Test():bool:this
8 ( 0.79% of base) : 11006.dasm - EMFloatClass:DivideInternalFPF(InternalFPF,InternalFPF,InternalFPF)
7 ( 0.67% of base) : 11614.dasm - Fourier:DoFPUTransIteration(System.Double[],System.Double[],int):long
9 ( 0.62% of base) : 17895.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildStoresToTemps(bool,System.Collections.Immutable.ImmutableArray`1[Int32],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[RefKind],System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool,Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[RefKind],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
Top method improvements (percentages):
-32 (-18.82% of base) : 8714.dasm - System.Collections.Generic.GenericEqualityComparer`1[OpCode][System.Reflection.Emit.OpCode]:IndexOf(System.Reflection.Emit.OpCode[],System.Reflection.Emit.OpCode,int,int):int:this
-27 (-18.12% of base) : 16820.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
-49 (-15.41% of base) : 2580.dasm - System.Collections.Generic.GenericEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
-37 (-13.55% of base) : 25004.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
-441 (-12.93% of base) : 14836.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
-66 (-12.67% of base) : 7607.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
-16 (-12.21% of base) : 16011.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
-382 (-11.90% of base) : 24595.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
-20 (-11.70% of base) : 24870.dasm - System.Net.MultiArrayBuffer:FreeBlocks(int,int):this
-16 (-11.27% of base) : 22394.dasm - Benchstone.BenchI.BubbleSort:VerifySort(System.Int32[],int):bool
-16 (-11.11% of base) : 14163.dasm - System.Tests.Perf_String:IndexerCheckBoundCheckHoist():int:this
-127 (-10.94% of base) : 14835.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
-31 (-10.69% of base) : 1226.dasm - System.Collections.Generic.ObjectEqualityComparer`1[__Canon][System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
-53 (-10.25% of base) : 23160.dasm - BenchmarksGame.SpectralNorm_1:Bench(int):double:this
-54 (-9.94% of base) : 21535.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
-16 (-9.70% of base) : 19187.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.GreenNode[],int):Microsoft.CodeAnalysis.GreenNode
-18 (-9.57% of base) : 7287.dasm - System.Xml.XmlBufferReader:GetChars(int,int,System.Char[]):int:this
-71 (-9.04% of base) : 14837.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
-91 (-8.86% of base) : 10989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):System.Int32[]:this
-46 (-8.71% of base) : 12170.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int
106 total methods with Code Size differences (99 improved, 7 regressed), 3 unchanged.
```
</details>
--------------------------------------------------------------------------------
```
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 125510
Total bytes of diff: 121741
Total bytes of delta: -3769 (-3.00% of base)
Total relative delta: -8.61
diff is an improvement.
relative diff is an improvement.
```
<details>
<summary>Detail diffs</summary>
```
Top file regressions (bytes):
146 : 252404.dasm (7.08% of base)
89 : 247750.dasm (6.57% of base)
77 : 194613.dasm (4.42% of base)
30 : 247636.dasm (9.01% of base)
19 : 246394.dasm (1.13% of base)
19 : 246391.dasm (1.13% of base)
16 : 194650.dasm (1.66% of base)
8 : 80128.dasm (0.51% of base)
8 : 251502.dasm (1.77% of base)
8 : 194668.dasm (0.79% of base)
7 : 194673.dasm (0.67% of base)
6 : 246102.dasm (0.85% of base)
5 : 233555.dasm (0.19% of base)
3 : 251167.dasm (1.50% of base)
3 : 251184.dasm (1.41% of base)
1 : 253592.dasm (0.65% of base)
1 : 247761.dasm (0.10% of base)
Top file improvements (bytes):
-441 : 194692.dasm (-12.93% of base)
-382 : 248707.dasm (-11.90% of base)
-208 : 247902.dasm (-4.40% of base)
-137 : 228747.dasm (-17.75% of base)
-127 : 194690.dasm (-10.94% of base)
-102 : 224161.dasm (-18.18% of base)
-93 : 194691.dasm (-8.15% of base)
-91 : 248631.dasm (-8.86% of base)
-71 : 194693.dasm (-9.04% of base)
-66 : 228761.dasm (-12.67% of base)
-61 : 228759.dasm (-8.51% of base)
-57 : 228735.dasm (-7.82% of base)
-54 : 251180.dasm (-9.94% of base)
-53 : 248642.dasm (-10.25% of base)
-48 : 251181.dasm (-8.38% of base)
-46 : 248657.dasm (-5.67% of base)
-42 : 248661.dasm (-16.03% of base)
-39 : 246188.dasm (-12.00% of base)
-34 : 249141.dasm (-17.17% of base)
-34 : 228739.dasm (-9.66% of base)
175 total files with Code Size differences (158 improved, 17 regressed), 2 unchanged.
Top method regressions (bytes):
146 ( 7.08% of base) : 252404.dasm - Complex_Array_Test:Main(System.String[]):int
89 ( 6.57% of base) : 247750.dasm - JitTest.LCS:findLCS(byref,byref,byref,byref)
77 ( 4.42% of base) : 194613.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
30 ( 9.01% of base) : 247636.dasm - Test:Main():int
19 ( 1.13% of base) : 246394.dasm - DefaultNamespace.MulDimJagAry:Main(System.String[]):int
19 ( 1.13% of base) : 246391.dasm - DefaultNamespace.MulDimJagAry:Main(System.String[]):int
16 ( 1.66% of base) : 194650.dasm - EMFloat:DivideInternalFPF(byref,byref,byref)
8 ( 0.51% of base) : 80128.dasm - JitTest.LCS:findLCS(System.TypedReference,System.TypedReference,System.TypedReference,System.TypedReference)
8 ( 1.77% of base) : 251502.dasm - VectorMathTests.Program:sum(System.Numerics.Vector4[]):float
8 ( 0.79% of base) : 194668.dasm - EMFloatClass:DivideInternalFPF(InternalFPF,InternalFPF,InternalFPF)
7 ( 0.67% of base) : 194673.dasm - Fourier:DoFPUTransIteration(System.Double[],System.Double[],int):long
6 ( 0.85% of base) : 246102.dasm - request:Main(System.String[]):int
5 ( 0.19% of base) : 233555.dasm - MemoryAlloc:SteadyState():this
3 ( 1.50% of base) : 251167.dasm - Benchstone.BenchI.BubbleSort2:Bench():bool
3 ( 1.41% of base) : 251184.dasm - Benchstone.BenchI.QuickSort:Bench():bool
1 ( 0.65% of base) : 253592.dasm - Buffer:.ctor(System.String):this
1 ( 0.10% of base) : 247761.dasm - JitTest.LCS:findLCS(System.Int32[,,,],System.Int32[,,,],System.Char[][],System.Int32[])
Top method improvements (bytes):
-441 (-12.93% of base) : 194692.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
-382 (-11.90% of base) : 248707.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
-208 (-4.40% of base) : 247902.dasm - jaggedarr:gaussj(System.Double[,][],int,System.Double[,][],int)
-137 (-17.75% of base) : 228747.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
-127 (-10.94% of base) : 194690.dasm - LUDecomp:DoLUIteration(System.Double[][],System.Double[],System.Double[][][],System.Double[][],int):long
-102 (-18.18% of base) : 224161.dasm - AsAnyTests:CharArrayInit(System.Char[],System.Char[],System.Char[],System.Char[],System.Char[],System.Char[],System.String,System.String)
-93 (-8.15% of base) : 194691.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])
-91 (-8.86% of base) : 248631.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):System.Int32[]
-71 (-9.04% of base) : 194693.dasm - LUDecomp:lubksb(System.Double[][],int,System.Int32[],System.Double[])
-66 (-12.67% of base) : 228761.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
-61 (-8.51% of base) : 228759.dasm - SciMark2.SOR:execute(double,System.Double[][],int)
-57 (-7.82% of base) : 228735.dasm - SciMark2.kernel:CopyMatrix(System.Double[][],System.Double[][])
-54 (-9.94% of base) : 251180.dasm - Benchstone.BenchI.Array2:VerifyCopy(System.Int32[][][],System.Int32[][][]):bool
-53 (-10.25% of base) : 248642.dasm - BenchmarksGame.SpectralNorm_1:Bench(int):double:this
-48 (-8.38% of base) : 251181.dasm - Benchstone.BenchI.Array2:Bench(int):bool
-46 (-5.67% of base) : 248657.dasm - Benchstone.BenchF.InProd:Bench():bool
-42 (-16.03% of base) : 248661.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
-39 (-12.00% of base) : 246188.dasm - ToBoxOrNotToBox.Program:PerfTest1(int,int)
-34 (-17.17% of base) : 249141.dasm - VectorMathTests.Program:SimpleFilter(System.Double[],System.Double[]):System.Double[]
-34 (-9.66% of base) : 228739.dasm - SciMark2.kernel:matvec(System.Double[][],System.Double[],System.Double[])
Top method regressions (percentages):
30 ( 9.01% of base) : 247636.dasm - Test:Main():int
146 ( 7.08% of base) : 252404.dasm - Complex_Array_Test:Main(System.String[]):int
89 ( 6.57% of base) : 247750.dasm - JitTest.LCS:findLCS(byref,byref,byref,byref)
77 ( 4.42% of base) : 194613.dasm - AssignJagged:second_assignments(System.Int32[][],System.Int16[][])
8 ( 1.77% of base) : 251502.dasm - VectorMathTests.Program:sum(System.Numerics.Vector4[]):float
16 ( 1.66% of base) : 194650.dasm - EMFloat:DivideInternalFPF(byref,byref,byref)
3 ( 1.50% of base) : 251167.dasm - Benchstone.BenchI.BubbleSort2:Bench():bool
3 ( 1.41% of base) : 251184.dasm - Benchstone.BenchI.QuickSort:Bench():bool
19 ( 1.13% of base) : 246394.dasm - DefaultNamespace.MulDimJagAry:Main(System.String[]):int
19 ( 1.13% of base) : 246391.dasm - DefaultNamespace.MulDimJagAry:Main(System.String[]):int
6 ( 0.85% of base) : 246102.dasm - request:Main(System.String[]):int
8 ( 0.79% of base) : 194668.dasm - EMFloatClass:DivideInternalFPF(InternalFPF,InternalFPF,InternalFPF)
7 ( 0.67% of base) : 194673.dasm - Fourier:DoFPUTransIteration(System.Double[],System.Double[],int):long
1 ( 0.65% of base) : 253592.dasm - Buffer:.ctor(System.String):this
8 ( 0.51% of base) : 80128.dasm - JitTest.LCS:findLCS(System.TypedReference,System.TypedReference,System.TypedReference,System.TypedReference)
5 ( 0.19% of base) : 233555.dasm - MemoryAlloc:SteadyState():this
1 ( 0.10% of base) : 247761.dasm - JitTest.LCS:findLCS(System.Int32[,,,],System.Int32[,,,],System.Char[][],System.Int32[])
Top method improvements (percentages):
-30 (-24.59% of base) : 81774.dasm - GenericMethodPatchpoint:F(System.__Canon[],int,int):int
-22 (-19.13% of base) : 81553.dasm - Test:Check(int)
-21 (-19.09% of base) : 83954.dasm - VectorMathTests.Program:GenerateArray(int,int):System.Int32[]
-21 (-18.75% of base) : 81445.dasm - VectorMathTests.Program:GenerateArray(int,short):System.Int16[]
-102 (-18.18% of base) : 224161.dasm - AsAnyTests:CharArrayInit(System.Char[],System.Char[],System.Char[],System.Char[],System.Char[],System.Char[],System.String,System.String)
-137 (-17.75% of base) : 228747.dasm - SciMark2.LU:solve(System.Double[][],System.Int32[],System.Double[])
-34 (-17.17% of base) : 249141.dasm - VectorMathTests.Program:SimpleFilter(System.Double[],System.Double[]):System.Double[]
-42 (-16.03% of base) : 248661.dasm - Benchstone.BenchF.InProd:InnerProduct(byref,System.Double[][],System.Double[][],int,int)
-20 (-14.60% of base) : 246435.dasm - DefaultNamespace.BitArrayNode:.ctor(int):this
-17 (-13.71% of base) : 251614.dasm - SimpleArray_01.Test:Test1()
-16 (-13.33% of base) : 228733.dasm - SciMark2.kernel:CopyVector(System.Double[],System.Double[])
-31 (-13.03% of base) : 223791.dasm - PartialCompactionTest.PartialCompactionTest:CreateObject(int,bool):System.Object
-441 (-12.93% of base) : 194692.dasm - LUDecomp:ludcmp(System.Double[][],int,System.Int32[],byref):int
-66 (-12.67% of base) : 228761.dasm - SciMark2.SparseCompRow:matmult(System.Double[],System.Double[],System.Int32[],System.Int32[],System.Double[],int)
-12 (-12.63% of base) : 252322.dasm - BringUpTest:IntArraySum(System.Int32[],int):int
-16 (-12.40% of base) : 228732.dasm - SciMark2.kernel:NewVectorCopy(System.Double[]):System.Double[]
-39 (-12.00% of base) : 246188.dasm - ToBoxOrNotToBox.Program:PerfTest1(int,int)
-382 (-11.90% of base) : 248707.dasm - Benchstone.BenchI.MulMatrix:Inner(System.Int32[][],System.Int32[][],System.Int32[][])
-17 (-11.49% of base) : 228734.dasm - SciMark2.kernel:normabs(System.Double[],System.Double[]):double
-16 (-11.27% of base) : 251189.dasm - Benchstone.BenchI.BubbleSort:VerifySort(System.Int32[],int):bool
175 total methods with Code Size differences (158 improved, 17 regressed), 2 unchanged.
```
</details>
--------------------------------------------------------------------------------
```
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 220698
Total bytes of diff: 215908
Total bytes of delta: -4790 (-2.17% of base)
Total relative delta: -11.97
diff is an improvement.
relative diff is an improvement.
```
<details>
<summary>Detail diffs</summary>
```
Top file regressions (bytes):
27 : 76353.dasm (0.26% of base)
25 : 44013.dasm (1.02% of base)
9 : 44012.dasm (0.77% of base)
Top file improvements (bytes):
-75 : 76346.dasm (-6.56% of base)
-75 : 193719.dasm (-6.61% of base)
-73 : 197233.dasm (-12.33% of base)
-67 : 78235.dasm (-6.44% of base)
-63 : 106553.dasm (-14.65% of base)
-59 : 80124.dasm (-19.47% of base)
-52 : 181768.dasm (-7.11% of base)
-52 : 166644.dasm (-7.11% of base)
-49 : 60472.dasm (-15.36% of base)
-46 : 76347.dasm (-7.97% of base)
-46 : 193720.dasm (-8.24% of base)
-45 : 151597.dasm (-3.25% of base)
-45 : 210271.dasm (-1.99% of base)
-45 : 203399.dasm (-8.54% of base)
-44 : 151600.dasm (-2.95% of base)
-43 : 50050.dasm (-8.46% of base)
-43 : 50051.dasm (-8.17% of base)
-39 : 106246.dasm (-1.34% of base)
-39 : 156069.dasm (-8.28% of base)
-39 : 60467.dasm (-12.96% of base)
281 total files with Code Size differences (278 improved, 3 regressed), 2 unchanged.
Top method regressions (bytes):
27 ( 0.26% of base) : 76353.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
25 ( 1.02% of base) : 44013.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
9 ( 0.77% of base) : 44012.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMemberInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
Top method improvements (bytes):
-75 (-6.56% of base) : 76346.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Type[],System.Object[]):int
-75 (-6.61% of base) : 193719.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Type[],System.Object[]):int
-73 (-12.33% of base) : 197233.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
-67 (-6.44% of base) : 78235.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this
-63 (-14.65% of base) : 106553.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
-59 (-19.47% of base) : 80124.dasm - System.Collections.Generic.NullableEqualityComparer`1:IndexOf(System.Nullable`1[System.Int32][],System.Nullable`1[System.Int32],int,int):int:this
-52 (-7.11% of base) : 181768.dasm - DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
-52 (-7.11% of base) : 166644.dasm - System.Security.Cryptography.DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
-49 (-15.36% of base) : 60472.dasm - System.Collections.Generic.GenericEqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
-46 (-7.97% of base) : 76347.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo
-46 (-8.24% of base) : 193720.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo
-45 (-3.25% of base) : 151597.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(long,int,long,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this
-45 (-1.99% of base) : 210271.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,bool):int:this
-45 (-8.54% of base) : 203399.dasm - System.Net.IPAddressParser:AppendSections(System.UInt16[],int,int,System.Text.StringBuilder)
-44 (-2.95% of base) : 151600.dasm - System.Text.ISO2022Encoding:GetCharsCP5022xJP(long,int,long,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this
-43 (-8.46% of base) : 50050.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(System.Char[],int,int,byref):int
-43 (-8.17% of base) : 50051.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int
-39 (-1.34% of base) : 106246.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,bool,System.Data.DataColumn,System.Object):System.Object[]:this
-39 (-8.28% of base) : 156069.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:CanSpecialize(System.Collections.Generic.IDictionary`2[System.String, System.Object],System.Type[]):bool
-39 (-12.96% of base) : 60467.dasm - System.Collections.Generic.ObjectEqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
Top method regressions (percentages):
25 ( 1.02% of base) : 44013.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
9 ( 0.77% of base) : 44012.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMemberInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this
27 ( 0.26% of base) : 76353.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
Top method improvements (percentages):
-38 (-21.23% of base) : 32261.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
-59 (-19.47% of base) : 80124.dasm - System.Collections.Generic.NullableEqualityComparer`1:IndexOf(System.Nullable`1[System.Int32][],System.Nullable`1[System.Int32],int,int):int:this
-22 (-16.79% of base) : 4280.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
-22 (-16.79% of base) : 4284.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.String,int,int):int
-15 (-16.13% of base) : 106251.dasm - System.Data.ProviderBase.SchemaMapping:CreateIndexMap(int,int):System.Int32[]:this
-49 (-15.36% of base) : 60472.dasm - System.Collections.Generic.GenericEqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
-28 (-15.22% of base) : 165107.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearShortByte(System.Int16[],int):System.Byte[]
-24 (-14.81% of base) : 165109.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearByteShort(System.Byte[],int):System.Int16[]
-63 (-14.65% of base) : 106553.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
-39 (-12.96% of base) : 60467.dasm - System.Collections.Generic.ObjectEqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
-21 (-12.73% of base) : 106458.dasm - System.Data.SqlTypes.SqlBinary:HashByteArray(System.Byte[],int):int
-17 (-12.50% of base) : 118889.dasm - System.Xml.Schema.DatatypeImplementation:Compare(System.Byte[],System.Byte[]):int:this
-73 (-12.33% of base) : 197233.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
-17 (-11.72% of base) : 1130.dasm - Microsoft.CSharp.RuntimeBinder.Syntax.NameTable:ComputeHashCode(System.String,int):int
-16 (-11.51% of base) : 4170.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
-17 (-10.76% of base) : 20594.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxList:List(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode
-19 (-10.50% of base) : 6224.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int
-18 (-10.47% of base) : 11604.dasm - WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode][]):System.Int32[]
-16 (-10.26% of base) : 20565.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode[],int,int):this
-20 (-10.00% of base) : 60475.dasm - System.Collections.Generic.EqualityComparer`1:IndexOf(System.__Canon[],System.__Canon,int,int):int:this
281 total methods with Code Size differences (278 improved, 3 regressed), 2 unchanged.
```
</details>
--------------------------------------------------------------------------------
```
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 233941
Total bytes of diff: 228887
Total bytes of delta: -5054 (-2.16% of base)
Total relative delta: -14.62
diff is an improvement.
relative diff is an improvement.
```
<details>
<summary>Detail diffs</summary>
```
Top file regressions (bytes):
37 : 25696.dasm (0.89% of base)
25 : 126923.dasm (0.87% of base)
12 : 126924.dasm (0.94% of base)
9 : 29954.dasm (3.77% of base)
7 : 230975.dasm (0.64% of base)
7 : 232605.dasm (0.64% of base)
5 : 81373.dasm (0.22% of base)
2 : 208892.dasm (0.42% of base)
2 : 208910.dasm (0.42% of base)
2 : 208886.dasm (0.42% of base)
2 : 208864.dasm (0.42% of base)
2 : 116782.dasm (0.96% of base)
Top file improvements (bytes):
-163 : 77206.dasm (-8.25% of base)
-98 : 214290.dasm (-15.65% of base)
-75 : 211488.dasm (-6.89% of base)
-71 : 200508.dasm (-1.94% of base)
-64 : 117312.dasm (-14.19% of base)
-58 : 216272.dasm (-6.50% of base)
-58 : 216959.dasm (-6.50% of base)
-56 : 21737.dasm (-17.07% of base)
-53 : 157068.dasm (-3.47% of base)
-51 : 42829.dasm (-6.24% of base)
-46 : 108011.dasm (-8.71% of base)
-44 : 108012.dasm (-8.53% of base)
-43 : 25090.dasm (-22.28% of base)
-42 : 211487.dasm (-7.54% of base)
-42 : 157071.dasm (-2.94% of base)
-39 : 178657.dasm (-7.83% of base)
-38 : 183640.dasm (-1.70% of base)
-37 : 77949.dasm (-11.31% of base)
-36 : 25559.dasm (-3.28% of base)
-36 : 115275.dasm (-9.30% of base)
307 total files with Code Size differences (295 improved, 12 regressed), 6 unchanged.
Top method regressions (bytes):
37 ( 0.89% of base) : 25696.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Int32],bool,bool,bool,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this
25 ( 0.87% of base) : 126923.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):Result:this
12 ( 0.94% of base) : 126924.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMemberInitExpression(System.Linq.Expressions.Expression,int):Result:this
9 ( 3.77% of base) : 29954.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IsComCallWithRefOmitted(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[RefKind]):bool
7 ( 0.64% of base) : 230975.dasm - ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this
7 ( 0.64% of base) : 232605.dasm - ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this
5 ( 0.22% of base) : 81373.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,System.Guid,Microsoft.Cci.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this
2 ( 0.42% of base) : 208892.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Int32][System.Int32]:get_Item(System.ReadOnlySpan`1[Int32]):int:this
2 ( 0.42% of base) : 208910.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Int64][System.Int64]:get_Item(System.ReadOnlySpan`1[Int32]):long:this
2 ( 0.42% of base) : 208886.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Int16][System.Int16]:get_Item(System.ReadOnlySpan`1[Int32]):short:this
2 ( 0.42% of base) : 208864.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Byte][System.Byte]:get_Item(System.ReadOnlySpan`1[Int32]):ubyte:this
2 ( 0.96% of base) : 116782.dasm - System.Data.SqlTypes.SqlDecimal:GetHashCode():int:this
Top method improvements (bytes):
-163 (-8.25% of base) : 77206.dasm - Microsoft.Cci.CustomDebugInfoWriter:SerializeDynamicLocalInfo(Microsoft.Cci.IMethodBody,Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.Cci.BlobBuilder, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-98 (-15.65% of base) : 214290.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
-75 (-6.89% of base) : 211488.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Reflection.ParameterInfo[],System.Int32[],System.Type,System.Type[],System.Object[]):int
-71 (-1.94% of base) : 200508.dasm - System.Management.PropertyData:MapValueToWmiValue(System.Object,byref,byref):System.Object
-64 (-14.19% of base) : 117312.dasm - System.Data.SqlTypes.SqlString:CompareBinary2(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int
-58 (-6.50% of base) : 216272.dasm - DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
-58 (-6.50% of base) : 216959.dasm - System.Security.Cryptography.DSACng:GenerateV2DsaBlob(byref,System.Security.Cryptography.DSAParameters,int,bool)
-56 (-17.07% of base) : 21737.dasm - System.Collections.Generic.NullableEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Nullable`1[System.Byte][],System.Nullable`1[Byte],int,int):int:this
-53 (-3.47% of base) : 157068.dasm - System.Text.ISO2022Encoding:GetCharsCP5022xJP(long,int,long,int,ISO2022Decoder):int:this
-51 (-6.24% of base) : 42829.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,bool,bool):bool:this
-46 (-8.71% of base) : 108011.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(System.Char[],int,int,byref):int
-44 (-8.53% of base) : 108012.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(System.Char[],int,int,byref):int
-43 (-22.28% of base) : 25090.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
-42 (-7.54% of base) : 211487.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo
-42 (-2.94% of base) : 157071.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(long,int,long,int,ISO2022Decoder):int:this
-39 (-7.83% of base) : 178657.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:CanSpecialize(System.Collections.Generic.IDictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Type[]):bool
-38 (-1.70% of base) : 183640.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(QualifiedTableName,bool):int:this
-37 (-11.31% of base) : 77949.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(Microsoft.CodeAnalysis.BitVector):bool:this
-36 (-3.28% of base) : 25559.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasExplicitDelegateConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):bool:this
-36 (-9.30% of base) : 115275.dasm - System.Data.DataTable:RecordChanged(System.Int32[],System.Int32[]):this
Top method regressions (percentages):
9 ( 3.77% of base) : 29954.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IsComCallWithRefOmitted(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.BoundExpression, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[RefKind]):bool
2 ( 0.96% of base) : 116782.dasm - System.Data.SqlTypes.SqlDecimal:GetHashCode():int:this
12 ( 0.94% of base) : 126924.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMemberInitExpression(System.Linq.Expressions.Expression,int):Result:this
37 ( 0.89% of base) : 25696.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Int32],bool,bool,bool,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this
25 ( 0.87% of base) : 126923.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):Result:this
7 ( 0.64% of base) : 230975.dasm - ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this
7 ( 0.64% of base) : 232605.dasm - ArraySerializer:Deserialize(Xunit.Abstractions.IXunitSerializationInfo):this
2 ( 0.42% of base) : 208892.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Int32][System.Int32]:get_Item(System.ReadOnlySpan`1[Int32]):int:this
2 ( 0.42% of base) : 208910.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Int64][System.Int64]:get_Item(System.ReadOnlySpan`1[Int32]):long:this
2 ( 0.42% of base) : 208886.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Int16][System.Int16]:get_Item(System.ReadOnlySpan`1[Int32]):short:this
2 ( 0.42% of base) : 208864.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[Byte][System.Byte]:get_Item(System.ReadOnlySpan`1[Int32]):ubyte:this
5 ( 0.22% of base) : 81373.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,System.Guid,Microsoft.Cci.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this
Top method improvements (percentages):
-43 (-22.28% of base) : 25090.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateSourceIndicesArray(int,int):System.Int32[]
-32 (-22.22% of base) : 42747.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
-23 (-21.10% of base) : 117672.dasm - System.Data.ProviderBase.SchemaMapping:CreateIndexMap(int,int):System.Int32[]:this
-27 (-20.45% of base) : 21735.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int64][System.Int64]:IndexOf(System.Int64[],long,int,int):int:this
-32 (-19.28% of base) : 208836.dasm - System.Numerics.Tensors.ArrayUtilities:GetIndex(System.Int32[],System.ReadOnlySpan`1[Int32],int):int
-27 (-18.12% of base) : 83126.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,long,int):bool
-26 (-17.93% of base) : 21724.dasm - System.Collections.Generic.GenericEqualityComparer`1[Int16][System.Int16]:IndexOf(System.Int16[],short,int,int):int:this
-26 (-17.93% of base) : 21718.dasm - System.Collections.Generic.GenericEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Byte[],ubyte,int,int):int:this
-56 (-17.07% of base) : 21737.dasm - System.Collections.Generic.NullableEqualityComparer`1[Byte][System.Byte]:IndexOf(System.Nullable`1[System.Byte][],System.Nullable`1[Byte],int,int):int:this
-25 (-16.45% of base) : 209056.dasm - System.Numerics.Tensors.Tensor`1[__Canon][System.__Canon]:get_Item(System.ReadOnlySpan`1[Int32]):System.__Canon:this
-25 (-16.45% of base) : 209205.dasm - System.Numerics.Tensors.Tensor`1[Int64][System.Int64]:get_Item(System.ReadOnlySpan`1[Int32]):long:this
-25 (-16.45% of base) : 209157.dasm - System.Numerics.Tensors.Tensor`1[Int32][System.Int32]:get_Item(System.ReadOnlySpan`1[Int32]):int:this
-25 (-16.45% of base) : 209142.dasm - System.Numerics.Tensors.Tensor`1[Int16][System.Int16]:get_Item(System.ReadOnlySpan`1[Int32]):short:this
-25 (-16.45% of base) : 209120.dasm - System.Numerics.Tensors.Tensor`1[Byte][System.Byte]:get_Item(System.ReadOnlySpan`1[Int32]):ubyte:this
-23 (-16.31% of base) : 142775.dasm - System.Xml.Schema.DatatypeImplementation:Compare(System.Byte[],System.Byte[]):int:this
-24 (-16.00% of base) : 209206.dasm - System.Numerics.Tensors.Tensor`1[Int64][System.Int64]:set_Item(System.ReadOnlySpan`1[Int32],long):this
-24 (-16.00% of base) : 209158.dasm - System.Numerics.Tensors.Tensor`1[Int32][System.Int32]:set_Item(System.ReadOnlySpan`1[Int32],int):this
-24 (-16.00% of base) : 209057.dasm - System.Numerics.Tensors.Tensor`1[__Canon][System.__Canon]:set_Item(System.ReadOnlySpan`1[Int32],System.__Canon):this
-98 (-15.65% of base) : 214290.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
-30 (-15.62% of base) : 21731.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
307 total methods with Code Size differences (295 improved, 12 regressed), 6 unchanged.
```
</details>
--------------------------------------------------------------------------------
```
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 507552
Total bytes of diff: 500488
Total bytes of delta: -7064 (-1.39% of base)
Total relative delta: -18.21
diff is an improvement.
relative diff is an improvement.
```
<details>
<summary>Detail diffs</summary>
```
Top file regressions (bytes):
129 : 243955.dasm (6.71% of base)
129 : 239657.dasm (6.71% of base)
46 : 323028.dasm (1.11% of base)
32 : 24648.dasm (1.15% of base)
20 : 24652.dasm (0.83% of base)
10 : 180208.dasm (1.53% of base)
10 : 179680.dasm (1.53% of base)
10 : 180319.dasm (1.27% of base)
10 : 179747.dasm (1.39% of base)
9 : 179507.dasm (1.54% of base)
5 : 312567.dasm (0.65% of base)
4 : 180289.dasm (0.36% of base)
4 : 179711.dasm (0.43% of base)
3 : 86806.dasm (0.13% of base)
1 : 320454.dasm (0.03% of base)
1 : 205808.dasm (0.02% of base)
1 : 76903.dasm (0.02% of base)
1 : 323027.dasm (0.07% of base)
Top file improvements (bytes):
-66 : 76722.dasm (-4.54% of base)
-58 : 13653.dasm (-31.87% of base)
-48 : 291783.dasm (-24.74% of base)
-48 : 292208.dasm (-24.74% of base)
-40 : 81512.dasm (-2.47% of base)
-40 : 24366.dasm (-3.32% of base)
-40 : 24411.dasm (-3.32% of base)
-34 : 180353.dasm (-6.71% of base)
-34 : 180314.dasm (-6.48% of base)
-34 : 240737.dasm (-4.52% of base)
-34 : 77232.dasm (-2.04% of base)
-34 : 180344.dasm (-6.90% of base)
-34 : 180299.dasm (-6.84% of base)
-34 : 205725.dasm (-2.04% of base)
-34 : 236571.dasm (-4.52% of base)
-33 : 77244.dasm (-1.96% of base)
-33 : 205737.dasm (-1.96% of base)
-32 : 100494.dasm (-2.32% of base)
-32 : 179734.dasm (-7.55% of base)
-32 : 279623.dasm (-4.53% of base)
526 total files with Code Size differences (508 improved, 18 regressed), 18 unchanged.
Top method regressions (bytes):
129 ( 6.71% of base) : 243955.dasm - System.Data.SqlClient.TdsParser:WriteSessionRecoveryFeatureRequest(System.Data.SqlClient.SessionData,bool):int:this
129 ( 6.71% of base) : 239657.dasm - System.Data.SqlClient.TdsParser:WriteSessionRecoveryFeatureRequest(System.Data.SqlClient.SessionData,bool):int:this
46 ( 1.11% of base) : 323028.dasm - System.Transactions.Tests.NonMsdtcPromoterTests:TestCase_PSPENonMsdtc(bool,bool,int,int,int,int,int,int,int)
32 ( 1.15% of base) : 24648.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[Byte][System.Byte]:AddAfter_LLNode():this
20 ( 0.83% of base) : 24652.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[Byte][System.Byte]:AddBefore_LLNode():this
10 ( 1.53% of base) : 180208.dasm - System.SpanTests.SpanTests:MakeSureNoStartsWithChecksGoOutOfRange()
10 ( 1.53% of base) : 179680.dasm - System.SpanTests.ReadOnlySpanTests:MakeSureNoStartsWithChecksGoOutOfRange()
10 ( 1.27% of base) : 180319.dasm - System.SpanTests.SpanTests:MakeSureNoSequenceCompareToChecksGoOutOfRange()
10 ( 1.39% of base) : 179747.dasm - System.SpanTests.ReadOnlySpanTests:MakeSureNoSequenceCompareToChecksGoOutOfRange()
9 ( 1.54% of base) : 179507.dasm - System.Memory.Tests.SequenceReader.SequenceFactory:Create(System.Byte[][]):System.Buffers.ReadOnlySequence`1[Byte]
5 ( 0.65% of base) : 312567.dasm - System.Net.Test.Uri.IriTest.IriEscapeUnescapeTest:EscapeUnescapeAllUriComponentsInDifferentCultures(System.String):this
4 ( 0.36% of base) : 180289.dasm - System.SpanTests.SpanTests:MakeSureNoSequenceEqualChecksGoOutOfRange()
4 ( 0.43% of base) : 179711.dasm - System.SpanTests.ReadOnlySpanTests:MakeSureNoSequenceEqualChecksGoOutOfRange()
3 ( 0.13% of base) : 86806.dasm - System.Text.Encodings.Web.Tests.UnicodeHelpersTests:ReadListOfDefinedCharacters():System.Boolean[]
1 ( 0.03% of base) : 320454.dasm - System.Threading.Tasks.Test.ParallelStateTest:.ctor(System.Threading.Tasks.Test.TestParameters):this
1 ( 0.02% of base) : 205808.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim_Memory()
1 ( 0.02% of base) : 76903.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim_Memory()
1 ( 0.07% of base) : 323027.dasm - System.Transactions.Tests.NonMsdtcPromoterTests:TestCase_VolatileEnlistments(int,int,int,bool,bool,System.Type)
Top method improvements (bytes):
-66 (-4.54% of base) : 76722.dasm - System.Runtime.CompilerServices.Tests.ConditionalWeakTableTests:AddMany_ThenRemoveAll(int)
-58 (-31.87% of base) : 13653.dasm - Microsoft.CodeAnalysis.Rename.ConflictEngine.ConflictResolver:IsSubStringEqual(System.String,System.String,int):bool
-48 (-24.74% of base) : 291783.dasm - System.IO.Compression.Tests.ZipFileTestBase:ArraysEqual(System.Byte[],System.Byte[],int):bool
-48 (-24.74% of base) : 292208.dasm - System.IO.Compression.Tests.ZipFileTestBase:ArraysEqual(System.Byte[],System.Byte[],int):bool
-40 (-2.47% of base) : 81512.dasm - <>c:<Add>b__1_0(int):System.Tuple`3[[System.Runtime.CompilerServices.ConditionalWeakTable`2[[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.WeakReference[], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.WeakReference[], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
-40 (-3.32% of base) : 24366.dasm - System.Collections.Tests.Dictionary_Generic_Tests`2[__Canon,Nullable`1][System.__Canon,System.Nullable`1[System.Int32]]:TrimExcess_NoArgument_TrimAfterEachBulkAddOrRemove_TrimsToAtLeastCount(int,int,int,int,int):this
-40 (-3.32% of base) : 24411.dasm - System.Collections.Tests.Dictionary_Generic_Tests`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:TrimExcess_NoArgument_TrimAfterEachBulkAddOrRemove_TrimsToAtLeastCount(int,int,int,int,int):this
-34 (-6.71% of base) : 180353.dasm - System.SpanTests.SpanTests:SequenceCompareToNoMatch_Byte()
-34 (-6.48% of base) : 180314.dasm - System.SpanTests.SpanTests:SequenceCompareToWithSingleMismatch_Long()
-34 (-4.52% of base) : 240737.dasm - Microsoft.SqlServer.Server.SqlDataRecord:SetValues(System.Object[]):int:this
-34 (-2.04% of base) : 77232.dasm - System.Tests.StringTests:CompareToNoMatch_StringComparison()
-34 (-6.90% of base) : 180344.dasm - System.SpanTests.SpanTests:SequenceCompareToNoMatch_Bool()
-34 (-6.84% of base) : 180299.dasm - System.SpanTests.SpanTests:SequenceCompareToNoMatch_Char()
-34 (-2.04% of base) : 205725.dasm - System.Tests.StringTests:CompareToNoMatch_StringComparison()
-34 (-4.52% of base) : 236571.dasm - Microsoft.SqlServer.Server.SqlDataRecord:SetValues(System.Object[]):int:this
-33 (-1.96% of base) : 77244.dasm - System.Tests.StringTests:ContainsNoMatch_StringComparison()
-33 (-1.96% of base) : 205737.dasm - System.Tests.StringTests:ContainsNoMatch_StringComparison()
-32 (-2.32% of base) : 100494.dasm - XmlCoreTest.Common.WriterFactory:CompareString(System.String):bool:this
-32 (-7.55% of base) : 179734.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToNoMatch_Int()
-32 (-4.53% of base) : 279623.dasm - System.Collections.Specialized.Tests.StringDictionaryKeysTests:Key_CopyTo(int,int):this
Top method regressions (percentages):
129 ( 6.71% of base) : 243955.dasm - System.Data.SqlClient.TdsParser:WriteSessionRecoveryFeatureRequest(System.Data.SqlClient.SessionData,bool):int:this
129 ( 6.71% of base) : 239657.dasm - System.Data.SqlClient.TdsParser:WriteSessionRecoveryFeatureRequest(System.Data.SqlClient.SessionData,bool):int:this
9 ( 1.54% of base) : 179507.dasm - System.Memory.Tests.SequenceReader.SequenceFactory:Create(System.Byte[][]):System.Buffers.ReadOnlySequence`1[Byte]
10 ( 1.53% of base) : 180208.dasm - System.SpanTests.SpanTests:MakeSureNoStartsWithChecksGoOutOfRange()
10 ( 1.53% of base) : 179680.dasm - System.SpanTests.ReadOnlySpanTests:MakeSureNoStartsWithChecksGoOutOfRange()
10 ( 1.39% of base) : 179747.dasm - System.SpanTests.ReadOnlySpanTests:MakeSureNoSequenceCompareToChecksGoOutOfRange()
10 ( 1.27% of base) : 180319.dasm - System.SpanTests.SpanTests:MakeSureNoSequenceCompareToChecksGoOutOfRange()
32 ( 1.15% of base) : 24648.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[Byte][System.Byte]:AddAfter_LLNode():this
46 ( 1.11% of base) : 323028.dasm - System.Transactions.Tests.NonMsdtcPromoterTests:TestCase_PSPENonMsdtc(bool,bool,int,int,int,int,int,int,int)
20 ( 0.83% of base) : 24652.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[Byte][System.Byte]:AddBefore_LLNode():this
5 ( 0.65% of base) : 312567.dasm - System.Net.Test.Uri.IriTest.IriEscapeUnescapeTest:EscapeUnescapeAllUriComponentsInDifferentCultures(System.String):this
4 ( 0.43% of base) : 179711.dasm - System.SpanTests.ReadOnlySpanTests:MakeSureNoSequenceEqualChecksGoOutOfRange()
4 ( 0.36% of base) : 180289.dasm - System.SpanTests.SpanTests:MakeSureNoSequenceEqualChecksGoOutOfRange()
3 ( 0.13% of base) : 86806.dasm - System.Text.Encodings.Web.Tests.UnicodeHelpersTests:ReadListOfDefinedCharacters():System.Boolean[]
1 ( 0.07% of base) : 323027.dasm - System.Transactions.Tests.NonMsdtcPromoterTests:TestCase_VolatileEnlistments(int,int,int,bool,bool,System.Type)
1 ( 0.03% of base) : 320454.dasm - System.Threading.Tasks.Test.ParallelStateTest:.ctor(System.Threading.Tasks.Test.TestParameters):this
1 ( 0.02% of base) : 205808.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim_Memory()
1 ( 0.02% of base) : 76903.dasm - System.Tests.StringTests:WhiteSpaceAtEndTrim_Memory()
Top method improvements (percentages):
-58 (-31.87% of base) : 13653.dasm - Microsoft.CodeAnalysis.Rename.ConflictEngine.ConflictResolver:IsSubStringEqual(System.String,System.String,int):bool
-29 (-24.79% of base) : 48794.dasm - System.Linq.Expressions.Tests.ArrayIndexTests:GenerateGenericArray(int):System.__Canon[]
-48 (-24.74% of base) : 291783.dasm - System.IO.Compression.Tests.ZipFileTestBase:ArraysEqual(System.Byte[],System.Byte[],int):bool
-48 (-24.74% of base) : 292208.dasm - System.IO.Compression.Tests.ZipFileTestBase:ArraysEqual(System.Byte[],System.Byte[],int):bool
-24 (-21.62% of base) : 48795.dasm - System.Linq.Expressions.Tests.ArrayIndexTests:GenerateGenericArray(int):System.Byte[]
-24 (-21.62% of base) : 71238.dasm - XmlDictionaryWriterTest:GetByteArray(int):System.Byte[]
-24 (-21.62% of base) : 73858.dasm - XmlDictionaryWriterTest:GetByteArray(int):System.Byte[]
-21 (-18.75% of base) : 210054.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 211296.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 212851.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 160678.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 317432.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 318194.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 201468.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 214672.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 215078.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 248757.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-21 (-18.75% of base) : 290298.dasm - Test.Cryptography.ByteUtils:RepeatByte(ubyte,int):System.Byte[]
-22 (-12.43% of base) : 9202.dasm - Roslyn.Utilities.PathUtilities:PathsEqual(System.String,System.String,int):bool
-16 (-12.21% of base) : 8639.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Char[],int,int):int
526 total methods with Code Size differences (508 improved, 18 regressed), 18 unchanged.
```
</details>
--------------------------------------------------------------------------------
|
The code size diffs: Detail diffsDetail diffsDetail diffsDetail diffsDetail diffsDetail diffs |
|
I ran BenchmarkDotNet microbenchmarks on (most) of the benchmarks with spmi asm diffs, specifically:
I filtered out the ones where the baseline/diff ratio was between 0.99 and 1.01. The following are the results. There are some significant improvements (benchSparseMult over 30%), but more losses than wins. Improvements:
Regressions:
|
|
Based on the perf results, I don't plan to pursue this further. |
|
fyi @AndyAyersMS I did the loop cloning experiment of simplifying the loop cloning loop choice conditions into one-condition-per-block, and not use bitwise "and". The code size diffs are good, and the code reads better, but the overall perf results look negative (with some improvements as well). Based on this, I'm not planning on investigating this further. |
|
Any way you can make those results more readable? Would be great if you could pick one or two regressions and try to figure out why it's slower. |
Well, I could hand-construct a table. That seems like a lot of work when BDN should be able to output something I could copy/paste directly. I run BDN using (e.g., with "runtime2" as baseline build and "runtime" as diff): The
And the big winner. It's hard to compare base/diff perf numbers: are the branch predictions wrong/slow? Is the straight-line code more pipeline-able? Not sure how to figure this out... Need some Vtune magic probably. |
|
This won't be investigated again until .NET 7, so I'm going to close this for now. |
This builds on #55717
Add an option, statically determined at compile time,
to generate loop cloning loop choice conditions into one block
per condition instead of using bitwise and operators to always
execute all non-dependent conditions in a single block.
This leads to code size reduction in the condition code, as well
as making it easier to understand.