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

Stop using CLS_VAR for "boxed statics" #63845

3 changes: 3 additions & 0 deletions src/coreclr/jit/gentree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15917,6 +15917,9 @@ bool GenTree::IsFieldAddr(Compiler* comp, GenTree** pBaseAddr, FieldSeqNode** pF
// will effectively treat such cases ("possible" in unsafe code) as undefined behavior.
if (comp->eeIsFieldStatic(fldSeq->GetFieldHandle()))
{
// TODO-VNTypes: this code is out of sync w.r.t. boxed statics that are numbered with
// VNF_PtrToStatic and treated as "simple" while here we treat them as "complex".

// TODO-VNTypes: we will always return the "baseAddr" here for now, but strictly speaking,
// we only need to do that if we have a shared field, to encode the logical "instantiation"
// argument. In all other cases, this serves no purpose and just leads to redundant maps.
Expand Down
31 changes: 21 additions & 10 deletions src/coreclr/jit/morph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6265,20 +6265,32 @@ GenTree* Compiler::fgMorphField(GenTree* tree, MorphAddrContext* mac)
FieldSeqNode* fldSeq =
!isBoxedStatic ? GetFieldSeqStore()->CreateSingleton(symHnd) : FieldSeqStore::NotAField();

#ifdef TARGET_64BIT
// TODO-CQ: enable this optimization for 32 bit targets.
bool isStaticReadOnlyInited = false;
bool plsSpeculative = true;
if (info.compCompHnd->getStaticFieldCurrentClass(symHnd, &plsSpeculative) != NO_CLASS_HANDLE)
#ifdef TARGET_64BIT
bool plsSpeculative = true;
SingleAccretion marked this conversation as resolved.
Show resolved Hide resolved
if (tree->TypeIs(TYP_REF) && !isBoxedStatic)
{
isStaticReadOnlyInited = !plsSpeculative;
if (info.compCompHnd->getStaticFieldCurrentClass(symHnd, &plsSpeculative) != NO_CLASS_HANDLE)
{
isStaticReadOnlyInited = !plsSpeculative;
}
}
#endif // TARGET_64BIT

// even if RelocTypeHint is REL32 let's still prefer IND over GT_CLS_VAR
// for static readonly fields of statically initialized classes - thus we can
// apply GTF_IND_INVARIANT flag and make it hoistable/CSE-friendly
if (isStaticReadOnlyInited || (IMAGE_REL_BASED_REL32 != eeGetRelocTypeHint(fldAddr)))
// Choices made below have mostly historical reasons and
// should be unified to always use the IND(<address>) form.
SingleAccretion marked this conversation as resolved.
Show resolved Hide resolved
CLANG_FORMAT_COMMENT_ANCHOR;

#ifdef TARGET_64BIT
bool preferIndir =
isBoxedStatic || isStaticReadOnlyInited || (IMAGE_REL_BASED_REL32 != eeGetRelocTypeHint(fldAddr));
#else // !TARGET_64BIT
bool preferIndir = isBoxedStatic;
#endif // !TARGET_64BIT

if (preferIndir)
{
// The address is not directly addressible, so force it into a constant, so we handle it properly.
GenTreeFlags handleKind = GTF_EMPTY;
if (isBoxedStatic)
{
Expand Down Expand Up @@ -6321,7 +6333,6 @@ GenTree* Compiler::fgMorphField(GenTree* tree, MorphAddrContext* mac)
return fgMorphSmpOp(tree);
}
else
#endif // TARGET_64BIT
{
// Only volatile or classinit could be set, and they map over
noway_assert((tree->gtFlags & ~(GTF_FLD_VOLATILE | GTF_FLD_INITCLASS | GTF_COMMON_MASK)) == 0);
Expand Down
89 changes: 55 additions & 34 deletions src/coreclr/jit/valuenum.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7802,8 +7802,24 @@ void Compiler::fgValueNumberAssignment(GenTreeOp* tree)
GenTree* baseAddr = nullptr;
FieldSeqNode* fldSeq = nullptr;

if (argIsVNFunc && funcApp.m_func == VNF_PtrToStatic)
{
FieldSeqNode* fldSeq = vnStore->FieldSeqVNToFieldSeq(funcApp.m_args[1]);
assert(fldSeq != nullptr); // We should never see an empty sequence here.

if (fldSeq != FieldSeqStore::NotAField())
{
ValueNum newHeapVN = vnStore->VNApplySelectorsAssign(VNK_Liberal, fgCurMemoryVN[GcHeap], fldSeq,
rhsVNPair.GetLiberal(), lhs->TypeGet());
recordGcHeapStore(tree, newHeapVN DEBUGARG("static field store"));
}
else
{
fgMutateGcHeap(tree DEBUGARG("indirect store at NotAField PtrToStatic address"));
}
}
// Is the LHS an array index expression?
if (argIsVNFunc && funcApp.m_func == VNF_PtrToArrElem)
else if (argIsVNFunc && funcApp.m_func == VNF_PtrToArrElem)
{
CORINFO_CLASS_HANDLE elemTypeEq =
CORINFO_CLASS_HANDLE(vnStore->ConstantValue<ssize_t>(funcApp.m_args[0]));
Expand Down Expand Up @@ -8625,39 +8641,19 @@ void Compiler::fgValueNumberTree(GenTree* tree)
ValueNumPair clsVarVNPair;
GenTreeClsVar* clsVar = tree->AsClsVar();
FieldSeqNode* fldSeq = clsVar->gtFieldSeq;
assert(fldSeq != nullptr); // We need to have one.
CORINFO_FIELD_HANDLE fieldHnd = clsVar->gtClsVarHnd;
assert(fieldHnd != NO_FIELD_HANDLE);
ValueNum selectedStaticVar = ValueNumStore::NoVN;

if (fldSeq == FieldSeqStore::NotAField())
{
// This is the box for a "boxed static" - see "fgMorphField".
assert(gtIsStaticFieldPtrToBoxedStruct(clsVar->TypeGet(), fieldHnd));
assert((fldSeq != nullptr) && (fldSeq != FieldSeqStore::NotAField())); // We need to have one.

// We will create an empty field sequence for VNF_PtrToStatic here. We will assume
// the actual sequence will get appended later, when processing the TARGET_POINTER_SIZE
// offset that is always added to this box to get to its payload.

ValueNum fieldHndVN = vnStore->VNForHandle(ssize_t(fieldHnd), GTF_ICON_FIELD_HDL);
ValueNum fieldSeqVN = vnStore->VNForFieldSeq(nullptr);
clsVarVNPair.SetBoth(vnStore->VNForFunc(TYP_REF, VNF_PtrToStatic, fieldHndVN, fieldSeqVN));
}
else
{
// This is a reference to heap memory.
// We model statics as indices into GcHeap (which is a subset of ByrefExposed).
// This is a reference to heap memory.
// We model statics as indices into GcHeap (which is a subset of ByrefExposed).
size_t structSize = 0;
ValueNum selectedStaticVar =
vnStore->VNApplySelectors(VNK_Liberal, fgCurMemoryVN[GcHeap], fldSeq, &structSize);
selectedStaticVar =
vnStore->VNApplySelectorsTypeCheck(selectedStaticVar, tree->TypeGet(), structSize);

size_t structSize = 0;
selectedStaticVar =
vnStore->VNApplySelectors(VNK_Liberal, fgCurMemoryVN[GcHeap], fldSeq, &structSize);
selectedStaticVar =
vnStore->VNApplySelectorsTypeCheck(selectedStaticVar, tree->TypeGet(), structSize);

clsVarVNPair.SetLiberal(selectedStaticVar);
// The conservative interpretation always gets a new, unique VN.
clsVarVNPair.SetConservative(vnStore->VNForExpr(compCurBB, tree->TypeGet()));
}
clsVarVNPair.SetLiberal(selectedStaticVar);
// The conservative interpretation always gets a new, unique VN.
clsVarVNPair.SetConservative(vnStore->VNForExpr(compCurBB, tree->TypeGet()));

// The ValueNum returned must represent the full-sized IL-Stack value
// If we need to widen this value then we need to introduce a VNF_Cast here to represent
Expand Down Expand Up @@ -8834,9 +8830,22 @@ void Compiler::fgValueNumberTree(GenTree* tree)

if (!wasNewobj)
{
// Indirections off of addresses for boxed statics represent bases for
// the address of the static itself. Here we will use "nullptr" for the
// field sequence and assume the actual static field will be appended to
// it later, as part of numbering the method table pointer offset addition.
if (addr->IsCnsIntOrI() && addr->IsIconHandle(GTF_ICON_STATIC_BOX_PTR))
{
assert(addrNvnp.BothEqual() && (addrXvnp == vnStore->VNPForEmptyExcSet()));
ValueNum boxAddrVN = addrNvnp.GetLiberal();
ValueNum fieldSeqVN = vnStore->VNForFieldSeq(nullptr);
ValueNum staticAddrVN =
vnStore->VNForFunc(tree->TypeGet(), VNF_PtrToStatic, boxAddrVN, fieldSeqVN);
tree->gtVNPair = ValueNumPair(staticAddrVN, staticAddrVN);
}
// Is this invariant indirect expected to always return a non-null value?
// TODO-VNTypes: non-null indirects should only be used for TYP_REFs.
if ((tree->gtFlags & GTF_IND_NONNULL) != 0)
else if ((tree->gtFlags & GTF_IND_NONNULL) != 0)
{
assert(tree->gtFlags & GTF_IND_NONFAULTING);
tree->gtVNPair = vnStore->VNPairForFunc(tree->TypeGet(), VNF_NonNullIndirect, addrNvnp);
Expand Down Expand Up @@ -10614,8 +10623,20 @@ void Compiler::fgValueNumberAddExceptionSetForIndirection(GenTree* tree, GenTree

// The normal VN for base address is used to create the NullPtrExc
ValueNumPair vnpBaseNorm = vnStore->VNPNormalPair(baseVNP);
ValueNumPair excChkSet = vnStore->VNPForEmptyExcSet();

VNFuncApp baseAddrFunc;
if (!vnStore->GetVNFunc(vnpBaseNorm.GetLiberal(), &baseAddrFunc) || (baseAddrFunc.m_func != VNF_PtrToStatic))
{
excChkSet.SetLiberal(
vnStore->VNExcSetSingleton(vnStore->VNForFunc(TYP_REF, VNF_NullPtrExc, vnpBaseNorm.GetLiberal())));
}

ValueNumPair excChkSet = vnStore->VNPExcSetSingleton(vnStore->VNPairForFunc(TYP_REF, VNF_NullPtrExc, vnpBaseNorm));
if (!vnStore->GetVNFunc(vnpBaseNorm.GetConservative(), &baseAddrFunc) || (baseAddrFunc.m_func != VNF_PtrToStatic))
{
excChkSet.SetConservative(
vnStore->VNExcSetSingleton(vnStore->VNForFunc(TYP_REF, VNF_NullPtrExc, vnpBaseNorm.GetConservative())));
}
Copy link
Member

Choose a reason for hiding this comment

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

Can we check the non-faulting flags more generally here instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

For the common cases the non-faultness is already checked by OperMayThrow in fgValueNumberAddExceptionSet.

The general form of this check is IsKnownNonNull(vnpBaseNorm.GetLiberal/Conservative), but it leads to many regressions (as well as some improvements).

Copy link
Member

Choose a reason for hiding this comment

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

Why does it cause additional regressions?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

There is something in how that particular check enables new CSEs that seems to hit weak points in the heuristic and/or downstream allocation. I. e. we get more CSEs, but a lot of them are not profitable.

For reference, here are some of the diffs for the IsKnownNotNull change:

Win-x64 diffs

Benchmarks, code size:

Total bytes of base: 13127786 (overridden on cmd)
Total bytes of diff: 13128181 (overridden on cmd)
Total bytes of delta: 395 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
         122 : 2938.dasm (5.64% of base)
         104 : 2912.dasm (4.58% of base)
          28 : 34011.dasm (1.92% of base)
          24 : 32996.dasm (5.56% of base)
          23 : 32995.dasm (6.93% of base)
          19 : 38750.dasm (1.99% of base)
          19 : 8736.dasm (2.81% of base)
          17 : 33687.dasm (0.87% of base)
          16 : 7760.dasm (0.14% of base)
          12 : 8446.dasm (1.81% of base)
          12 : 1005.dasm (3.14% of base)
          11 : 7557.dasm (1.44% of base)
           9 : 30092.dasm (0.71% of base)
           7 : 6086.dasm (0.89% of base)
           7 : 38438.dasm (0.87% of base)
           7 : 10034.dasm (1.38% of base)
           7 : 35026.dasm (1.36% of base)
           7 : 9178.dasm (0.41% of base)
           6 : 37438.dasm (3.51% of base)
           4 : 32979.dasm (0.59% of base)

Top file improvements (bytes):
         -50 : 38322.dasm (-3.57% of base)
         -24 : 37730.dasm (-7.32% of base)
          -8 : 33586.dasm (-0.42% of base)
          -6 : 37845.dasm (-0.46% of base)
          -5 : 39951.dasm (-1.95% of base)
          -3 : 2686.dasm (-0.29% of base)
          -2 : 3629.dasm (-0.81% of base)
          -2 : 1040.dasm (-0.10% of base)
          -2 : 3625.dasm (-0.93% of base)
          -1 : 1292.dasm (-0.06% of base)
          -1 : 8199.dasm (-0.15% of base)
          -1 : 1198.dasm (-0.07% of base)
          -1 : 2763.dasm (-0.23% of base)
          -1 : 32309.dasm (-0.16% of base)
          -1 : 7630.dasm (-0.26% of base)
          -1 : 8671.dasm (-0.01% of base)

55 total files with Code Size differences (16 improved, 39 regressed), 1 unchanged.

Top method regressions (bytes):
         122 ( 5.64% of base) : 2938.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Call(System.Reflection.MethodInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
         104 ( 4.58% of base) : 2912.dasm - Sigil.Emit`1[__Canon][System.__Canon]:CallVirtual(System.Reflection.MethodInfo,System.Type,System.Type[]):Sigil.Emit`1[__Canon]:this
          28 ( 1.92% of base) : 34011.dasm - BinderFactoryVisitor:VisitCompilationUnit(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,bool,bool):Microsoft.CodeAnalysis.CSharp.InContainerBinder:this
          24 ( 5.56% of base) : 32996.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.GreenNode,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          23 ( 6.93% of base) : 32995.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(ushort,Microsoft.CodeAnalysis.GreenNode,System.String,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          19 ( 1.99% of base) : 38750.dasm - SIMD.RayTracerBench:RenderLoop(int):this
          19 ( 2.81% of base) : 8736.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],bool):this
          17 ( 0.87% of base) : 33687.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(bool,int,System.Collections.Generic.IEnumerable`1[[System.Linq.IGrouping`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Reflection.Metadata.TypeDefinitionHandle, System.Reflection.Metadata, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Linq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.StringComparer,byref,byref)
          16 ( 0.14% of base) : 7760.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,bool,bool,bool):MessagePack.Internal.ObjectSerializationInfo
          12 ( 1.81% of base) : 8446.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetChildPrivateProperties(System.Collections.Generic.IList`1[[System.Reflection.PropertyInfo, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Type,int)
          12 ( 3.14% of base) : 1005.dasm - System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this
          11 ( 1.44% of base) : 7557.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeToSymbolicConverter:<Convert>g__FlattenNestedConcatenations|9_2(System.Text.RegularExpressions.RegexNode):System.Collections.Generic.List`1[[System.Text.RegularExpressions.RegexNode, System.Text.RegularExpressions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
           9 ( 0.71% of base) : 30092.dasm - System.Diagnostics.NtProcessInfoHelper:GetProcessInfos(System.ReadOnlySpan`1[Byte],System.Nullable`1[Int32]):System.Diagnostics.ProcessInfo[]
           7 ( 1.36% of base) : 35026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:IsFixedBuffer(byref,byref):bool:this
           7 ( 0.89% of base) : 6086.dasm - System.Net.Http.Headers.HttpHeaders:TryParseAndAddRawHeaderValue(System.Net.Http.Headers.HeaderDescriptor,HeaderStoreItemInfo,System.String,bool):bool
           7 ( 0.41% of base) : 9178.dasm - System.Runtime.Serialization.FormatterServices:InternalGetSerializableMembers(System.Type):System.Reflection.FieldInfo[]
           7 ( 0.87% of base) : 38438.dasm - System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,bool):bool:this
           7 ( 1.38% of base) : 10034.dasm - System.Xml.Serialization.LocalScope:AddToFreeLocals(System.Collections.Generic.Dictionary`2[[System.ValueTuple`2[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.Queue`1[[System.Reflection.Emit.LocalBuilder, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):this
           6 ( 3.51% of base) : 37438.dasm - <>c__DisplayClass8_0[Int32][System.Int32]:<SetupConcurrentStackIteration>b__0():this
           4 ( 3.20% of base) : 939.dasm - JetStream.Hand:.ctor():this

Top method improvements (bytes):
         -50 (-3.57% of base) : 38322.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this
         -24 (-7.32% of base) : 37730.dasm - LinqBenchmarks:Where00ForX():bool:this
          -8 (-0.42% of base) : 33586.dasm - Microsoft.CodeAnalysis.CSharp.Imports:FromGlobalUsings(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.Imports
          -6 (-0.46% of base) : 37845.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this
          -5 (-1.95% of base) : 39951.dasm - Burgers:Setup():this
          -3 (-0.29% of base) : 2686.dasm - Sigil.Impl.RollingVerifier:RemoveUnnecessaryVerifiers():this
          -2 (-0.81% of base) : 3629.dasm - System.Memory.Constructors`1[__Canon][System.__Canon]:.ctor():this
          -2 (-0.93% of base) : 3625.dasm - System.Memory.Constructors`1[Byte][System.Byte]:.ctor():this
          -2 (-0.10% of base) : 1040.dasm - System.Text.RegularExpressions.RegexFindOptimizations:.ctor(System.Text.RegularExpressions.RegexTree,System.Globalization.CultureInfo):this
          -1 (-0.07% of base) : 1198.dasm - <>c__DisplayClass121_0:<EmitGo>g__EmitAlternation|6(System.Text.RegularExpressions.RegexNode):this
          -1 (-0.15% of base) : 8199.dasm - <>c__DisplayClass35_0[__Canon][System.__Canon]:<Emit>b__2(System.Reflection.Emit.ILGenerator,bool,System.Text.StringBuilder):this
          -1 (-0.26% of base) : 7630.dasm - JetStream.Statistics:segmentTimeSeriesByMaximizingSchwarzCriterion(System.Double[],double,int):System.Int32[]
          -1 (-0.06% of base) : 1292.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate():System.__Canon
          -1 (-0.23% of base) : 2763.dasm - Sigil.Impl.StackTransition:.ctor(System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Sigil.Impl.VerificationCallback):this
          -1 (-0.16% of base) : 32309.dasm - System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
          -1 (-0.01% of base) : 8671.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,bool,bool,System.Xml.Serialization.RecursionLimiter):this

Top method regressions (percentages):
          23 ( 6.93% of base) : 32995.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(ushort,Microsoft.CodeAnalysis.GreenNode,System.String,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
         122 ( 5.64% of base) : 2938.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Call(System.Reflection.MethodInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
          24 ( 5.56% of base) : 32996.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.GreenNode,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
         104 ( 4.58% of base) : 2912.dasm - Sigil.Emit`1[__Canon][System.__Canon]:CallVirtual(System.Reflection.MethodInfo,System.Type,System.Type[]):Sigil.Emit`1[__Canon]:this
           6 ( 3.51% of base) : 37438.dasm - <>c__DisplayClass8_0[Int32][System.Int32]:<SetupConcurrentStackIteration>b__0():this
           4 ( 3.20% of base) : 939.dasm - JetStream.Hand:.ctor():this
          12 ( 3.14% of base) : 1005.dasm - System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this
          19 ( 2.81% of base) : 8736.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],bool):this
          19 ( 1.99% of base) : 38750.dasm - SIMD.RayTracerBench:RenderLoop(int):this
           2 ( 1.94% of base) : 32636.dasm - System.Collections.Concurrent.ConcurrentStack`1[Int32][System.Int32]:Push(int):this
          28 ( 1.92% of base) : 34011.dasm - BinderFactoryVisitor:VisitCompilationUnit(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,bool,bool):Microsoft.CodeAnalysis.CSharp.InContainerBinder:this
          12 ( 1.81% of base) : 8446.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetChildPrivateProperties(System.Collections.Generic.IList`1[[System.Reflection.PropertyInfo, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Type,int)
           2 ( 1.80% of base) : 32526.dasm - System.Collections.Concurrent.ConcurrentStack`1[__Canon][System.__Canon]:Push(System.__Canon):this
          11 ( 1.44% of base) : 7557.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeToSymbolicConverter:<Convert>g__FlattenNestedConcatenations|9_2(System.Text.RegularExpressions.RegexNode):System.Collections.Generic.List`1[[System.Text.RegularExpressions.RegexNode, System.Text.RegularExpressions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
           7 ( 1.38% of base) : 10034.dasm - System.Xml.Serialization.LocalScope:AddToFreeLocals(System.Collections.Generic.Dictionary`2[[System.ValueTuple`2[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.Queue`1[[System.Reflection.Emit.LocalBuilder, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):this
           7 ( 1.36% of base) : 35026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:IsFixedBuffer(byref,byref):bool:this
           4 ( 1.00% of base) : 10615.dasm - System.Xml.XmlDocument:LoadXml(System.String):this
           4 ( 0.92% of base) : 12149.dasm - SmallXmlNodeList:Add(System.Object):this
           7 ( 0.89% of base) : 6086.dasm - System.Net.Http.Headers.HttpHeaders:TryParseAndAddRawHeaderValue(System.Net.Http.Headers.HeaderDescriptor,HeaderStoreItemInfo,System.String,bool):bool
          17 ( 0.87% of base) : 33687.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(bool,int,System.Collections.Generic.IEnumerable`1[[System.Linq.IGrouping`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Reflection.Metadata.TypeDefinitionHandle, System.Reflection.Metadata, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Linq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.StringComparer,byref,byref)

Top method improvements (percentages):
         -24 (-7.32% of base) : 37730.dasm - LinqBenchmarks:Where00ForX():bool:this
         -50 (-3.57% of base) : 38322.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this
          -5 (-1.95% of base) : 39951.dasm - Burgers:Setup():this
          -2 (-0.93% of base) : 3625.dasm - System.Memory.Constructors`1[Byte][System.Byte]:.ctor():this
          -2 (-0.81% of base) : 3629.dasm - System.Memory.Constructors`1[__Canon][System.__Canon]:.ctor():this
          -6 (-0.46% of base) : 37845.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this
          -8 (-0.42% of base) : 33586.dasm - Microsoft.CodeAnalysis.CSharp.Imports:FromGlobalUsings(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.Imports
          -3 (-0.29% of base) : 2686.dasm - Sigil.Impl.RollingVerifier:RemoveUnnecessaryVerifiers():this
          -1 (-0.26% of base) : 7630.dasm - JetStream.Statistics:segmentTimeSeriesByMaximizingSchwarzCriterion(System.Double[],double,int):System.Int32[]
          -1 (-0.23% of base) : 2763.dasm - Sigil.Impl.StackTransition:.ctor(System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Sigil.Impl.VerificationCallback):this
          -1 (-0.16% of base) : 32309.dasm - System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
          -1 (-0.15% of base) : 8199.dasm - <>c__DisplayClass35_0[__Canon][System.__Canon]:<Emit>b__2(System.Reflection.Emit.ILGenerator,bool,System.Text.StringBuilder):this
          -2 (-0.10% of base) : 1040.dasm - System.Text.RegularExpressions.RegexFindOptimizations:.ctor(System.Text.RegularExpressions.RegexTree,System.Globalization.CultureInfo):this
          -1 (-0.07% of base) : 1198.dasm - <>c__DisplayClass121_0:<EmitGo>g__EmitAlternation|6(System.Text.RegularExpressions.RegexNode):this
          -1 (-0.06% of base) : 1292.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate():System.__Canon
          -1 (-0.01% of base) : 8671.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,bool,bool,System.Xml.Serialization.RecursionLimiter):this

55 total methods with Code Size differences (16 improved, 39 regressed), 1 unchanged.

Benchmarks, PerfScore:

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 3081793.2500000005
Total PerfScoreUnits of diff: 2985966.4699999993
Total PerfScoreUnits of delta: -95826.78 (-3.11 % of base)
Total relative delta: -0.19
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (PerfScoreUnits):
       21.20 : 2938.dasm (4.29% of base)
       18.77 : 2912.dasm (3.55% of base)
        9.90 : 8736.dasm (2.89% of base)
        8.70 : 9178.dasm (0.46% of base)
        7.15 : 38750.dasm (0.88% of base)
        5.70 : 33687.dasm (0.07% of base)
        5.20 : 8446.dasm (0.46% of base)
        3.65 : 32996.dasm (3.83% of base)
        2.80 : 34011.dasm (0.81% of base)
        2.45 : 1005.dasm (2.64% of base)
        2.05 : 32995.dasm (2.63% of base)
        1.70 : 38438.dasm (0.60% of base)
        1.70 : 35026.dasm (1.28% of base)
        1.45 : 6086.dasm (0.42% of base)
        1.27 : 939.dasm (3.33% of base)
        1.10 : 7557.dasm (0.31% of base)
        0.55 : 3629.dasm (0.70% of base)
        0.55 : 3625.dasm (0.81% of base)
        0.40 : 10615.dasm (0.37% of base)

Top file improvements (PerfScoreUnits):
    -95742.30 : 7760.dasm (-3.17% of base)
      -62.90 : 37730.dasm (-7.54% of base)
      -14.05 : 2686.dasm (-1.37% of base)
      -11.80 : 39140.dasm (-0.60% of base)
      -11.10 : 1198.dasm (-1.48% of base)
      -11.10 : 32309.dasm (-4.75% of base)
       -9.40 : 38322.dasm (-0.08% of base)
       -7.70 : 37845.dasm (-0.06% of base)
       -6.60 : 39951.dasm (-6.64% of base)
       -5.80 : 34232.dasm (-2.08% of base)
       -5.80 : 39753.dasm (-2.66% of base)
       -4.10 : 30092.dasm (-0.26% of base)
       -3.90 : 37438.dasm (-2.49% of base)
       -2.60 : 8671.dasm (-0.04% of base)
       -1.90 : 33462.dasm (-0.78% of base)
       -1.85 : 8199.dasm (-1.21% of base)
       -1.85 : 7630.dasm (-0.37% of base)
       -1.80 : 33586.dasm (-0.15% of base)
       -1.30 : 2621.dasm (-0.17% of base)
       -1.30 : 32636.dasm (-3.98% of base)

56 total files with Perf Score differences (37 improved, 19 regressed), 0 unchanged.

Top method regressions (PerfScoreUnits):
       21.20 ( 4.29% of base) : 2938.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Call(System.Reflection.MethodInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
       18.77 ( 3.55% of base) : 2912.dasm - Sigil.Emit`1[__Canon][System.__Canon]:CallVirtual(System.Reflection.MethodInfo,System.Type,System.Type[]):Sigil.Emit`1[__Canon]:this
        9.90 ( 2.89% of base) : 8736.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],bool):this
        8.70 ( 0.46% of base) : 9178.dasm - System.Runtime.Serialization.FormatterServices:InternalGetSerializableMembers(System.Type):System.Reflection.FieldInfo[]
        7.15 ( 0.88% of base) : 38750.dasm - SIMD.RayTracerBench:RenderLoop(int):this
        5.70 ( 0.07% of base) : 33687.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(bool,int,System.Collections.Generic.IEnumerable`1[[System.Linq.IGrouping`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Reflection.Metadata.TypeDefinitionHandle, System.Reflection.Metadata, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Linq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.StringComparer,byref,byref)
        5.20 ( 0.46% of base) : 8446.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetChildPrivateProperties(System.Collections.Generic.IList`1[[System.Reflection.PropertyInfo, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Type,int)
        3.65 ( 3.83% of base) : 32996.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.GreenNode,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.80 ( 0.81% of base) : 34011.dasm - BinderFactoryVisitor:VisitCompilationUnit(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,bool,bool):Microsoft.CodeAnalysis.CSharp.InContainerBinder:this
        2.45 ( 2.64% of base) : 1005.dasm - System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this
        2.05 ( 2.63% of base) : 32995.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(ushort,Microsoft.CodeAnalysis.GreenNode,System.String,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        1.70 ( 1.28% of base) : 35026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:IsFixedBuffer(byref,byref):bool:this
        1.70 ( 0.60% of base) : 38438.dasm - System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,bool):bool:this
        1.45 ( 0.42% of base) : 6086.dasm - System.Net.Http.Headers.HttpHeaders:TryParseAndAddRawHeaderValue(System.Net.Http.Headers.HeaderDescriptor,HeaderStoreItemInfo,System.String,bool):bool
        1.27 ( 3.33% of base) : 939.dasm - JetStream.Hand:.ctor():this
        1.10 ( 0.31% of base) : 7557.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeToSymbolicConverter:<Convert>g__FlattenNestedConcatenations|9_2(System.Text.RegularExpressions.RegexNode):System.Collections.Generic.List`1[[System.Text.RegularExpressions.RegexNode, System.Text.RegularExpressions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
        0.55 ( 0.70% of base) : 3629.dasm - System.Memory.Constructors`1[__Canon][System.__Canon]:.ctor():this
        0.55 ( 0.81% of base) : 3625.dasm - System.Memory.Constructors`1[Byte][System.Byte]:.ctor():this
        0.40 ( 0.37% of base) : 10615.dasm - System.Xml.XmlDocument:LoadXml(System.String):this

Top method improvements (PerfScoreUnits):
    -95742.30 (-3.17% of base) : 7760.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,bool,bool,bool):MessagePack.Internal.ObjectSerializationInfo
      -62.90 (-7.54% of base) : 37730.dasm - LinqBenchmarks:Where00ForX():bool:this
      -14.05 (-1.37% of base) : 2686.dasm - Sigil.Impl.RollingVerifier:RemoveUnnecessaryVerifiers():this
      -11.80 (-0.60% of base) : 39140.dasm - BenchmarksGame.ReverseComplement_6:Grouper()
      -11.10 (-1.48% of base) : 1198.dasm - <>c__DisplayClass121_0:<EmitGo>g__EmitAlternation|6(System.Text.RegularExpressions.RegexNode):this
      -11.10 (-4.75% of base) : 32309.dasm - System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
       -9.40 (-0.08% of base) : 38322.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this
       -7.70 (-0.06% of base) : 37845.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this
       -6.60 (-6.64% of base) : 39951.dasm - Burgers:Setup():this
       -5.80 (-2.08% of base) : 34232.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:VisitNamespaceMembersAsTasks(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol):this
       -5.80 (-2.66% of base) : 39753.dasm - <>c__DisplayClass7_0[Int32][System.Int32]:<SetupConcurrentStackIteration>b__1():this
       -4.10 (-0.26% of base) : 30092.dasm - System.Diagnostics.NtProcessInfoHelper:GetProcessInfos(System.ReadOnlySpan`1[Byte],System.Nullable`1[Int32]):System.Diagnostics.ProcessInfo[]
       -3.90 (-2.49% of base) : 37438.dasm - <>c__DisplayClass8_0[Int32][System.Int32]:<SetupConcurrentStackIteration>b__0():this
       -2.60 (-0.04% of base) : 8671.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,bool,bool,System.Xml.Serialization.RecursionLimiter):this
       -1.90 (-0.78% of base) : 33462.dasm - Microsoft.CodeAnalysis.PEAssembly:BuildInternalsVisibleToMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[System.Collections.Immutable.ImmutableArray`1[[System.Byte, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
       -1.85 (-1.21% of base) : 8199.dasm - <>c__DisplayClass35_0[__Canon][System.__Canon]:<Emit>b__2(System.Reflection.Emit.ILGenerator,bool,System.Text.StringBuilder):this
       -1.85 (-0.37% of base) : 7630.dasm - JetStream.Statistics:segmentTimeSeriesByMaximizingSchwarzCriterion(System.Double[],double,int):System.Int32[]
       -1.80 (-0.15% of base) : 33586.dasm - Microsoft.CodeAnalysis.CSharp.Imports:FromGlobalUsings(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.Imports
       -1.30 (-0.17% of base) : 2621.dasm - Jil.Common.ExtensionMethods:InvolvedTypes(System.Type):System.Collections.Generic.List`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
       -1.30 (-3.98% of base) : 32636.dasm - System.Collections.Concurrent.ConcurrentStack`1[Int32][System.Int32]:Push(int):this

Top method regressions (percentages):
       21.20 ( 4.29% of base) : 2938.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Call(System.Reflection.MethodInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
        3.65 ( 3.83% of base) : 32996.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.GreenNode,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
       18.77 ( 3.55% of base) : 2912.dasm - Sigil.Emit`1[__Canon][System.__Canon]:CallVirtual(System.Reflection.MethodInfo,System.Type,System.Type[]):Sigil.Emit`1[__Canon]:this
        1.27 ( 3.33% of base) : 939.dasm - JetStream.Hand:.ctor():this
        9.90 ( 2.89% of base) : 8736.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],bool):this
        2.45 ( 2.64% of base) : 1005.dasm - System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this
        2.05 ( 2.63% of base) : 32995.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(ushort,Microsoft.CodeAnalysis.GreenNode,System.String,System.String,Microsoft.CodeAnalysis.GreenNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        1.70 ( 1.28% of base) : 35026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:IsFixedBuffer(byref,byref):bool:this
        7.15 ( 0.88% of base) : 38750.dasm - SIMD.RayTracerBench:RenderLoop(int):this
        0.55 ( 0.81% of base) : 3625.dasm - System.Memory.Constructors`1[Byte][System.Byte]:.ctor():this
        2.80 ( 0.81% of base) : 34011.dasm - BinderFactoryVisitor:VisitCompilationUnit(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,bool,bool):Microsoft.CodeAnalysis.CSharp.InContainerBinder:this
        0.55 ( 0.70% of base) : 3629.dasm - System.Memory.Constructors`1[__Canon][System.__Canon]:.ctor():this
        1.70 ( 0.60% of base) : 38438.dasm - System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,bool):bool:this
        5.20 ( 0.46% of base) : 8446.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetChildPrivateProperties(System.Collections.Generic.IList`1[[System.Reflection.PropertyInfo, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Type,int)
        8.70 ( 0.46% of base) : 9178.dasm - System.Runtime.Serialization.FormatterServices:InternalGetSerializableMembers(System.Type):System.Reflection.FieldInfo[]
        1.45 ( 0.42% of base) : 6086.dasm - System.Net.Http.Headers.HttpHeaders:TryParseAndAddRawHeaderValue(System.Net.Http.Headers.HeaderDescriptor,HeaderStoreItemInfo,System.String,bool):bool
        0.40 ( 0.37% of base) : 10615.dasm - System.Xml.XmlDocument:LoadXml(System.String):this
        1.10 ( 0.31% of base) : 7557.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeToSymbolicConverter:<Convert>g__FlattenNestedConcatenations|9_2(System.Text.RegularExpressions.RegexNode):System.Collections.Generic.List`1[[System.Text.RegularExpressions.RegexNode, System.Text.RegularExpressions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
        5.70 ( 0.07% of base) : 33687.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(bool,int,System.Collections.Generic.IEnumerable`1[[System.Linq.IGrouping`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Reflection.Metadata.TypeDefinitionHandle, System.Reflection.Metadata, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Linq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.StringComparer,byref,byref)

Top method improvements (percentages):
      -62.90 (-7.54% of base) : 37730.dasm - LinqBenchmarks:Where00ForX():bool:this
       -6.60 (-6.64% of base) : 39951.dasm - Burgers:Setup():this
      -11.10 (-4.75% of base) : 32309.dasm - System.Globalization.HebrewCalendar:GetDatePart(long,int):int:this
       -1.30 (-3.98% of base) : 32636.dasm - System.Collections.Concurrent.ConcurrentStack`1[Int32][System.Int32]:Push(int):this
       -1.30 (-3.52% of base) : 32526.dasm - System.Collections.Concurrent.ConcurrentStack`1[__Canon][System.__Canon]:Push(System.__Canon):this
    -95742.30 (-3.17% of base) : 7760.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,bool,bool,bool):MessagePack.Internal.ObjectSerializationInfo
       -5.80 (-2.66% of base) : 39753.dasm - <>c__DisplayClass7_0[Int32][System.Int32]:<SetupConcurrentStackIteration>b__1():this
       -3.90 (-2.49% of base) : 37438.dasm - <>c__DisplayClass8_0[Int32][System.Int32]:<SetupConcurrentStackIteration>b__0():this
       -5.80 (-2.08% of base) : 34232.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:VisitNamespaceMembersAsTasks(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol):this
      -11.10 (-1.48% of base) : 1198.dasm - <>c__DisplayClass121_0:<EmitGo>g__EmitAlternation|6(System.Text.RegularExpressions.RegexNode):this
      -14.05 (-1.37% of base) : 2686.dasm - Sigil.Impl.RollingVerifier:RemoveUnnecessaryVerifiers():this
       -1.85 (-1.21% of base) : 8199.dasm - <>c__DisplayClass35_0[__Canon][System.__Canon]:<Emit>b__2(System.Reflection.Emit.ILGenerator,bool,System.Text.StringBuilder):this
       -1.10 (-1.03% of base) : 12149.dasm - SmallXmlNodeList:Add(System.Object):this
       -0.55 (-0.89% of base) : 34264.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):System.Object:this
       -1.90 (-0.78% of base) : 33462.dasm - Microsoft.CodeAnalysis.PEAssembly:BuildInternalsVisibleToMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.List`1[[System.Collections.Immutable.ImmutableArray`1[[System.Byte, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
      -11.80 (-0.60% of base) : 39140.dasm - BenchmarksGame.ReverseComplement_6:Grouper()
       -0.60 (-0.56% of base) : 2763.dasm - Sigil.Impl.StackTransition:.ctor(System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Sigil.Impl.VerificationCallback):this
       -1.30 (-0.39% of base) : 10034.dasm - System.Xml.Serialization.LocalScope:AddToFreeLocals(System.Collections.Generic.Dictionary`2[[System.ValueTuple`2[[System.Type, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Generic.Queue`1[[System.Reflection.Emit.LocalBuilder, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):this
       -0.15 (-0.37% of base) : 1092.dasm - System.Reflection.Emit.DynamicScope:.ctor():this
       -0.95 (-0.37% of base) : 4016.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this

56 total methods with Perf Score differences (37 improved, 19 regressed), 0 unchanged.

Libraries (PMI), code size:

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47891504 (overridden on cmd)
Total bytes of diff: 47893878 (overridden on cmd)
Total bytes of delta: 2374 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
          58 : 58157.dasm (2.69% of base)
          51 : 28142.dasm (2.13% of base)
          50 : 164155.dasm (1.97% of base)
          49 : 56304.dasm (0.95% of base)
          36 : 13302.dasm (10.98% of base)
          34 : 28163.dasm (2.98% of base)
          34 : 28166.dasm (2.41% of base)
          34 : 225845.dasm (5.52% of base)
          34 : 28135.dasm (2.75% of base)
          34 : 28141.dasm (3.00% of base)
          31 : 116212.dasm (1.27% of base)
          30 : 22945.dasm (2.41% of base)
          29 : 44985.dasm (1.92% of base)
          27 : 28631.dasm (0.71% of base)
          27 : 43144.dasm (3.70% of base)
          27 : 73413.dasm (0.48% of base)
          27 : 161660.dasm (1.34% of base)
          24 : 35560.dasm (7.23% of base)
          24 : 28139.dasm (0.64% of base)
          23 : 163869.dasm (3.43% of base)

Top file improvements (bytes):
         -35 : 148830.dasm (-0.90% of base)
         -26 : 148824.dasm (-1.46% of base)
         -24 : 115923.dasm (-2.08% of base)
         -20 : 73083.dasm (-5.99% of base)
         -20 : 145107.dasm (-0.64% of base)
         -18 : 152313.dasm (-1.93% of base)
         -17 : 69572.dasm (-1.28% of base)
         -16 : 236053.dasm (-2.42% of base)
         -16 : 157795.dasm (-1.25% of base)
         -15 : 54440.dasm (-11.72% of base)
         -12 : 55949.dasm (-1.15% of base)
         -10 : 161812.dasm (-0.49% of base)
          -9 : 102164.dasm (-0.88% of base)
          -9 : 133866.dasm (-0.70% of base)
          -9 : 133865.dasm (-0.77% of base)
          -9 : 151712.dasm (-0.61% of base)
          -8 : 205903.dasm (-0.27% of base)
          -8 : 205910.dasm (-0.35% of base)
          -8 : 205972.dasm (-0.56% of base)
          -8 : 149607.dasm (-1.20% of base)

527 total files with Code Size differences (147 improved, 380 regressed), 21 unchanged.

Top method regressions (bytes):
          58 ( 2.69% of base) : 58157.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:IntegerLiteralToken(System.String,int,int,long,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.IntegerLiteralTokenSyntax
          51 ( 2.13% of base) : 28142.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitObjectCreationExpressionInternal(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          50 ( 1.97% of base) : 164155.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:Read(System.IO.Stream,Microsoft.Extensions.Configuration.Xml.XmlDocumentDecryptor):System.Collections.Generic.IDictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
          49 ( 0.95% of base) : 56304.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeArgumentArrayArgument(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
          36 (10.98% of base) : 13302.dasm - OperatorIntrinsics:gen@5265-2(System.Numerics.Vector`1[Single],Microsoft.FSharp.Core.FSharpFunc`2[[System.Numerics.Vector`1[[System.Single, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.FSharpFunc`2[[System.Numerics.Vector`1[[System.Single, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Numerics.Vector`1[[System.Single, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], FSharp.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],Microsoft.FSharp.Core.Unit):System.Collections.Generic.IEnumerator`1[Vector`1]
          34 ( 2.98% of base) : 28163.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          34 ( 2.41% of base) : 28166.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitArrayCreation(Microsoft.CodeAnalysis.CSharp.BoundArrayCreation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          34 ( 2.75% of base) : 28135.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          34 ( 3.00% of base) : 28141.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitObjectCreationContinued(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          34 ( 5.52% of base) : 225845.dasm - System.Security.Cryptography.Pkcs.SignerInfo:VerifySignature(System.Security.Cryptography.Pkcs.CmsSignature,System.Security.Cryptography.X509Certificates.X509Certificate2,bool):bool:this
          31 ( 1.27% of base) : 116212.dasm - System.Data.DataTable:SerializeConstraints(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext,int,bool):this
          30 ( 2.41% of base) : 22945.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindScriptFieldInitializers(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInteractiveInitializerMethod,System.Collections.Immutable.ImmutableArray`1[ImmutableArray`1],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.BoundInitializer, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.DiagnosticBag,byref)
          29 ( 1.92% of base) : 44985.dasm - BinderFactoryVisitor:VisitCompilationUnit(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,bool,bool):Microsoft.CodeAnalysis.CSharp.InContainerBinder:this
          27 ( 0.71% of base) : 28631.dasm - Microsoft.CodeAnalysis.CSharp.MethodToStateMachineRewriter:VisitTryStatement(Microsoft.CodeAnalysis.CSharp.BoundTryStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this
          27 ( 3.70% of base) : 43144.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBuilder:MakeSymbol(int,System.Collections.Generic.IList`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBuilder, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:this
          27 ( 1.34% of base) : 161660.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.IDispatchComObject:EnsureScanDefinedMethods():this
          27 ( 0.48% of base) : 73413.dasm - StateMachineMethodToClassRewriter[Byte][System.Byte]:VisitTryStatement(Microsoft.CodeAnalysis.VisualBasic.BoundTryStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
          24 ( 0.64% of base) : 28139.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitInitializer(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          24 ( 7.23% of base) : 35560.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          23 ( 3.43% of base) : 163869.dasm - <AsEnumerable>d__3:MoveNext():bool:this

Top method improvements (bytes):
         -35 (-0.90% of base) : 148830.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,bool,bool,System.String):System.Object:this
         -26 (-1.46% of base) : 148824.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this
         -24 (-2.08% of base) : 115923.dasm - System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this
         -20 (-5.99% of base) : 73083.dasm - InitializeComponentCallTreeBuilder:CollectCallees(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundBlock)
         -20 (-0.64% of base) : 145107.dasm - System.Xml.Xsl.Xslt.XslAstRewriter:Refactor(System.Xml.Xsl.Xslt.XslNode,int):this
         -18 (-1.93% of base) : 152313.dasm - System.Speech.Internal.SrgsCompiler.Backend:BuildHeader(System.Collections.Generic.List`1[[System.Speech.Internal.SrgsCompiler.State, System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,ushort,byref,byref):CfgSerializedHeader:this
         -17 (-1.28% of base) : 69572.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter:VisitList(Microsoft.CodeAnalysis.SyntaxTokenList):Microsoft.CodeAnalysis.SyntaxTokenList:this
         -16 (-1.25% of base) : 157795.dasm - CommandLine.Core.Tokenizer:PreprocessDashDash(System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Func`2[[System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[RailwaySharp.ErrorHandling.Result`2[[System.Collections.Generic.IEnumerable`1[[CommandLine.Core.Token, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[CommandLine.Error, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]], commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]]):RailwaySharp.ErrorHandling.Result`2[[System.Collections.Generic.IEnumerable`1[[CommandLine.Core.Token, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[CommandLine.Error, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]]
         -16 (-2.42% of base) : 236053.dasm - System.Text.RegularExpressions.Symbolic.BVAlgebra:.ctor(System.Text.RegularExpressions.Symbolic.CharSetSolver,System.Text.RegularExpressions.Symbolic.BDD[]):this
         -15 (-11.72% of base) : 54440.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundNodeFinder:ContainsNode(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundNode,int,bool):bool
         -12 (-1.15% of base) : 55949.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitNullableIsTrueOperator(Microsoft.CodeAnalysis.VisualBasic.BoundNullableIsTrueOperator):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
         -10 (-0.49% of base) : 161812.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindApplicableSignatures(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,int,System.Collections.Generic.List`1[[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+UnaOpFullSig, Microsoft.CSharp, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):bool:this
          -9 (-0.88% of base) : 102164.dasm - Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC:GetFreeListEfficiency(System.Collections.Generic.List`1[[Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC):Microsoft.Diagnostics.Tracing.Analysis.GC.FreeListEfficiency
          -9 (-0.70% of base) : 133866.dasm - System.Runtime.Serialization.ReflectionReader:GetCollectionSetItemDelegate(System.Runtime.Serialization.CollectionDataContract,System.Object,bool):CollectionSetItemDelegate:this
          -9 (-0.77% of base) : 133865.dasm - System.Runtime.Serialization.ReflectionReader:GetCollectionSetItemDelegate(System.Runtime.Serialization.CollectionDataContract,System.Object,bool):CollectionSetItemDelegate:this
          -9 (-0.61% of base) : 151712.dasm - System.Speech.Internal.AudioFormatConverter:ConvertFormat(int):System.Speech.AudioFormat.SpeechAudioFormatInfo
          -8 (-1.28% of base) : 194574.dasm - System.DirectoryServices.AccountManagement.SAMMembersSet:BookmarkAndReset():System.DirectoryServices.AccountManagement.ResultSetBookmark:this
          -8 (-0.27% of base) : 205903.dasm - System.Management.ManagementClassGenerator:GenerateClassNameProperty():this
          -8 (-0.56% of base) : 205972.dasm - System.Management.ManagementClassGenerator:GeneratePublicProperty(System.String,System.String,System.CodeDom.CodeExpression,bool,System.String,bool):this
          -8 (-0.35% of base) : 205910.dasm - System.Management.ManagementClassGenerator:GenerateScopeProperty():this

Top method regressions (percentages):
          36 (10.98% of base) : 13302.dasm - OperatorIntrinsics:gen@5265-2(System.Numerics.Vector`1[Single],Microsoft.FSharp.Core.FSharpFunc`2[[System.Numerics.Vector`1[[System.Single, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.FSharp.Core.FSharpFunc`2[[System.Numerics.Vector`1[[System.Single, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Numerics.Vector`1[[System.Single, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], FSharp.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],Microsoft.FSharp.Core.Unit):System.Collections.Generic.IEnumerator`1[Vector`1]
          23 ( 7.88% of base) : 35561.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          24 ( 7.23% of base) : 35560.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          12 ( 6.15% of base) : 35574.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,double,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          12 ( 5.85% of base) : 79912.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:GetAddDiagnostic(Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[TextSpan],Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,bool):System.Action`1[[Microsoft.CodeAnalysis.Diagnostic, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
          10 ( 5.78% of base) : 35578.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:StringLiteral(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          34 ( 5.52% of base) : 225845.dasm - System.Security.Cryptography.Pkcs.SignerInfo:VerifySignature(System.Security.Cryptography.Pkcs.CmsSignature,System.Security.Cryptography.X509Certificates.X509Certificate2,bool):bool:this
          10 ( 5.26% of base) : 35570.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,System.__Canon,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          10 ( 5.24% of base) : 25544.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:GetFieldOrPropertyInitializerBinder(Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this
          20 ( 4.77% of base) : 114416.dasm - System.Xml.DataDocumentXPathNavigator:.ctor(System.Xml.DataDocumentXPathNavigator):this
           9 ( 4.74% of base) : 35573.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,int,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
           9 ( 4.74% of base) : 35576.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,long,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
           9 ( 4.74% of base) : 35571.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
           9 ( 4.71% of base) : 35572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,short,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
          10 ( 4.67% of base) : 57430.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeAttributeDataToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.String):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
          10 ( 4.67% of base) : 57431.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeEntityLiteralToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.String):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
          10 ( 4.39% of base) : 57415.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeCDataToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.Text.StringBuilder):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
          10 ( 4.39% of base) : 57437.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeTextLiteralToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.Text.StringBuilder):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
           5 ( 4.35% of base) : 173885.dasm - System.Collections.Concurrent.ConcurrentStack`1[Double][System.Double]:Push(double):this
           9 ( 4.29% of base) : 57798.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:CharacterLiteralToken(System.String,ushort,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CharacterLiteralTokenSyntax

Top method improvements (percentages):
         -15 (-11.72% of base) : 54440.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundNodeFinder:ContainsNode(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundNode,int,bool):bool
          -4 (-7.14% of base) : 237818.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Int32][System.Int32]:get_ValueForDebugger():int:this
          -4 (-7.02% of base) : 237805.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Byte][System.Byte]:get_HasValueForDebugger():bool:this
          -4 (-7.02% of base) : 237806.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Byte][System.Byte]:get_ValueForDebugger():ubyte:this
          -4 (-7.02% of base) : 237827.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Int64][System.Int64]:get_ValueForDebugger():long:this
          -4 (-6.90% of base) : 237815.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Int16][System.Int16]:get_ValueForDebugger():short:this
          -4 (-6.67% of base) : 237851.dasm - DebugView[Int32][System.Int32]:get_Value():int:this
          -4 (-6.56% of base) : 237840.dasm - DebugView[Byte][System.Byte]:get_HasValue():bool:this
          -4 (-6.56% of base) : 237841.dasm - DebugView[Byte][System.Byte]:get_Value():ubyte:this
          -4 (-6.56% of base) : 237854.dasm - DebugView[Int64][System.Int64]:get_Value():long:this
          -4 (-6.56% of base) : 237821.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Double][System.Double]:get_ValueForDebugger():double:this
          -4 (-6.45% of base) : 237850.dasm - DebugView[Int16][System.Int16]:get_Value():short:this
          -4 (-6.25% of base) : 237564.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1[Byte][System.Byte]:get_OutputCountForDebugger():int:this
          -4 (-6.25% of base) : 237722.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
          -4 (-6.25% of base) : 237987.dasm - System.Threading.Tasks.Dataflow.BufferBlock`1[Byte][System.Byte]:get_CountForDebugger():int:this
          -4 (-6.25% of base) : 238069.dasm - System.Threading.Tasks.Dataflow.JoinBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
          -4 (-6.25% of base) : 238128.dasm - System.Threading.Tasks.Dataflow.TransformBlock`2[__Canon,Nullable`1][System.__Canon,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
          -4 (-6.25% of base) : 238153.dasm - System.Threading.Tasks.Dataflow.TransformBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
          -4 (-6.25% of base) : 238230.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2[__Canon,Nullable`1][System.__Canon,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
          -4 (-6.25% of base) : 238261.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this

527 total methods with Code Size differences (147 improved, 380 regressed), 21 unchanged.

Libraries (PMI), PerfScore:

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 92985034.48
Total PerfScoreUnits of diff: 92979651.82000007
Total PerfScoreUnits of delta: -5382.66 (-0.01 % of base)
Total relative delta: -2.58
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (PerfScoreUnits):
        9.90 : 148436.dasm (2.86% of base)
        6.70 : 161660.dasm (0.67% of base)
        6.25 : 164155.dasm (0.49% of base)
        6.20 : 201314.dasm (6.09% of base)
        6.20 : 201472.dasm (6.09% of base)
        6.20 : 201665.dasm (6.09% of base)
        6.20 : 201729.dasm (6.09% of base)
        5.85 : 28142.dasm (0.77% of base)
        5.20 : 104646.dasm (0.55% of base)
        5.17 : 58157.dasm (1.11% of base)
        4.95 : 43144.dasm (2.42% of base)
        3.90 : 28141.dasm (1.51% of base)
        3.90 : 28135.dasm (1.32% of base)
        3.90 : 28163.dasm (1.43% of base)
        3.90 : 28166.dasm (1.16% of base)
        3.70 : 77281.dasm (0.05% of base)
        3.65 : 225845.dasm (2.45% of base)
        3.65 : 35560.dasm (4.44% of base)
        3.65 : 56304.dasm (0.22% of base)
        3.40 : 44985.dasm (0.97% of base)

Top file improvements (PerfScoreUnits):
    -4190.25 : 148830.dasm (-5.67% of base)
     -767.90 : 113251.dasm (-1.08% of base)
      -63.90 : 143583.dasm (-2.72% of base)
      -49.00 : 22945.dasm (-2.34% of base)
      -36.63 : 145107.dasm (-0.99% of base)
      -18.10 : 148824.dasm (-3.27% of base)
      -16.50 : 145090.dasm (-2.07% of base)
      -11.80 : 189066.dasm (-0.27% of base)
      -11.10 : 235439.dasm (-1.73% of base)
      -11.00 : 205975.dasm (-0.19% of base)
      -10.95 : 69572.dasm (-1.20% of base)
      -10.00 : 161812.dasm (-1.02% of base)
       -9.80 : 152313.dasm (-2.89% of base)
       -8.30 : 83676.dasm (-5.04% of base)
       -7.70 : 79935.dasm (-1.74% of base)
       -7.37 : 170709.dasm (-0.34% of base)
       -7.20 : 158724.dasm (-0.53% of base)
       -7.10 : 192301.dasm (-1.88% of base)
       -6.97 : 236053.dasm (-2.73% of base)
       -6.80 : 158720.dasm (-0.44% of base)

548 total files with Perf Score differences (297 improved, 251 regressed), 0 unchanged.

Top method regressions (PerfScoreUnits):
        9.90 ( 2.86% of base) : 148436.dasm - System.Xml.Serialization.CodeGenerator:InitILGeneration(System.Type[],System.String[],bool):this
        6.70 ( 0.67% of base) : 161660.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.IDispatchComObject:EnsureScanDefinedMethods():this
        6.25 ( 0.49% of base) : 164155.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:Read(System.IO.Stream,Microsoft.Extensions.Configuration.Xml.XmlDocumentDecryptor):System.Collections.Generic.IDictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]
        6.20 ( 6.09% of base) : 201314.dasm - System.Linq.Parallel.FirstQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        6.20 ( 6.09% of base) : 201472.dasm - System.Linq.Parallel.LastQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        6.20 ( 6.09% of base) : 201665.dasm - System.Linq.Parallel.TakeOrSkipQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        6.20 ( 6.09% of base) : 201729.dasm - System.Linq.Parallel.TakeOrSkipWhileQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        5.85 ( 0.77% of base) : 28142.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitObjectCreationExpressionInternal(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
        5.20 ( 0.55% of base) : 104646.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetChildPrivateProperties(System.Collections.Generic.IList`1[[System.Reflection.PropertyInfo, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Type,int)
        5.17 ( 1.11% of base) : 58157.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:IntegerLiteralToken(System.String,int,int,long,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.IntegerLiteralTokenSyntax
        4.95 ( 2.42% of base) : 43144.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBuilder:MakeSymbol(int,System.Collections.Generic.IList`1[[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBuilder, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:this
        3.90 ( 1.51% of base) : 28141.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitObjectCreationContinued(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
        3.90 ( 1.43% of base) : 28163.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
        3.90 ( 1.16% of base) : 28166.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitArrayCreation(Microsoft.CodeAnalysis.CSharp.BoundArrayCreation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
        3.90 ( 1.32% of base) : 28135.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:VisitNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
        3.70 ( 0.05% of base) : 77281.dasm - Microsoft.CodeAnalysis.MetadataHelpers:GetInfoForImmediateNamespaceMembers(int,System.Collections.Generic.IEnumerable`1[[System.Linq.IGrouping`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Reflection.Metadata.TypeDefinitionHandle, System.Reflection.Metadata, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]], System.Linq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.StringComparer,byref,byref)
        3.65 ( 2.45% of base) : 225845.dasm - System.Security.Cryptography.Pkcs.SignerInfo:VerifySignature(System.Security.Cryptography.Pkcs.CmsSignature,System.Security.Cryptography.X509Certificates.X509Certificate2,bool):bool:this
        3.65 ( 4.44% of base) : 35560.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        3.65 ( 0.22% of base) : 56304.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeArgumentArrayArgument(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
        3.40 ( 0.97% of base) : 44985.dasm - BinderFactoryVisitor:VisitCompilationUnit(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,bool,bool):Microsoft.CodeAnalysis.CSharp.InContainerBinder:this

Top method improvements (PerfScoreUnits):
    -4190.25 (-5.67% of base) : 148830.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,bool,bool,System.String):System.Object:this
     -767.90 (-1.08% of base) : 113251.dasm - <ProcessTargetStack>d__21:MoveNext():this
      -63.90 (-2.72% of base) : 143583.dasm - System.Xml.Schema.XmlSchemaValidator:GetUnspecifiedDefaultAttributes(System.Collections.ArrayList,bool):this
      -49.00 (-2.34% of base) : 22945.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindScriptFieldInitializers(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInteractiveInitializerMethod,System.Collections.Immutable.ImmutableArray`1[ImmutableArray`1],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.BoundInitializer, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.DiagnosticBag,byref)
      -36.63 (-0.99% of base) : 145107.dasm - System.Xml.Xsl.Xslt.XslAstRewriter:Refactor(System.Xml.Xsl.Xslt.XslNode,int):this
      -18.10 (-3.27% of base) : 148824.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this
      -16.50 (-2.07% of base) : 145090.dasm - XPathAnalyzer:AnalyzeAvt(System.String):int:this
      -11.80 (-0.27% of base) : 189066.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this
      -11.10 (-1.73% of base) : 235439.dasm - <>c__DisplayClass121_0:<EmitGo>g__EmitAlternation|6(System.Text.RegularExpressions.RegexNode):this
      -11.00 (-0.19% of base) : 205975.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this
      -10.95 (-1.20% of base) : 69572.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter:VisitList(Microsoft.CodeAnalysis.SyntaxTokenList):Microsoft.CodeAnalysis.SyntaxTokenList:this
      -10.00 (-1.02% of base) : 161812.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindApplicableSignatures(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,int,System.Collections.Generic.List`1[[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+UnaOpFullSig, Microsoft.CSharp, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):bool:this
       -9.80 (-2.89% of base) : 152313.dasm - System.Speech.Internal.SrgsCompiler.Backend:BuildHeader(System.Collections.Generic.List`1[[System.Speech.Internal.SrgsCompiler.State, System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,ushort,byref,byref):CfgSerializedHeader:this
       -8.30 (-5.04% of base) : 83676.dasm - Diagnostics.Tracing.StackSources.AggregateStackSource:ForEach(System.Action`1[[Microsoft.Diagnostics.Tracing.Stacks.StackSourceSample, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],System.Boolean[]):this
       -7.70 (-1.74% of base) : 79935.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteSymbolActionsCore(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.Diagnostics.SymbolAnalyzerAction, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.ISymbol,System.Func`4[[Microsoft.CodeAnalysis.ISymbol, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.SyntaxReference, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.Compilation, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],AnalyzerStateData):this
       -7.37 (-0.34% of base) : 170709.dasm - System.CommandLine.Parsing.StringExtensions:Tokenize(System.Collections.Generic.IReadOnlyList`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.CommandLine.CommandLineConfiguration):System.CommandLine.Parsing.TokenizeResult
       -7.20 (-0.53% of base) : 158724.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:ParsePgoMethods():this
       -7.10 (-1.88% of base) : 192301.dasm - System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet:.ctor(System.Diagnostics.PerformanceData.CounterSetInstance):this
       -6.97 (-2.73% of base) : 236053.dasm - System.Text.RegularExpressions.Symbolic.BVAlgebra:.ctor(System.Text.RegularExpressions.Symbolic.CharSetSolver,System.Text.RegularExpressions.Symbolic.BDD[]):this
       -6.80 (-0.44% of base) : 158720.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:ParseInstanceMethodEntrypoints(System.Boolean[]):this

Top method regressions (percentages):
        6.20 ( 6.09% of base) : 201314.dasm - System.Linq.Parallel.FirstQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        6.20 ( 6.09% of base) : 201472.dasm - System.Linq.Parallel.LastQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        6.20 ( 6.09% of base) : 201665.dasm - System.Linq.Parallel.TakeOrSkipQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        6.20 ( 6.09% of base) : 201729.dasm - System.Linq.Parallel.TakeOrSkipWhileQueryOperator`1[Byte][System.Byte]:WrapPartitionedStream(System.Linq.Parallel.PartitionedStream`2[Byte,Byte],System.Linq.Parallel.IPartitionedStreamRecipient`1[Byte],bool,System.Linq.Parallel.QuerySettings):this
        3.65 ( 4.44% of base) : 35560.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:Identifier(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.25 ( 4.18% of base) : 35578.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:StringLiteral(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.25 ( 3.87% of base) : 57430.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeAttributeDataToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.String):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
        2.25 ( 3.87% of base) : 57431.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeEntityLiteralToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.String):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
        2.45 ( 3.83% of base) : 35574.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,double,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.25 ( 3.75% of base) : 35570.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,System.__Canon,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.25 ( 3.67% of base) : 57415.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeCDataToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.Text.StringBuilder):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
        2.25 ( 3.67% of base) : 57437.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:XmlMakeTextLiteralToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,System.Text.StringBuilder):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax:this
        2.15 ( 3.64% of base) : 35573.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,int,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.15 ( 3.64% of base) : 35576.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,long,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.15 ( 3.64% of base) : 35571.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.15 ( 3.64% of base) : 35572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:WithValue(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.String,short,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken
        2.15 ( 3.47% of base) : 57798.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:CharacterLiteralToken(System.String,ushort,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CharacterLiteralTokenSyntax
        2.15 ( 3.47% of base) : 57796.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:DateLiteralToken(System.String,System.DateTime,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DateLiteralTokenSyntax
        2.15 ( 3.47% of base) : 57789.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:XmlNameToken(System.String,ushort,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameTokenSyntax
        2.15 ( 3.39% of base) : 57792.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxFactory:DocumentationCommentLineBreakToken(System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlTextTokenSyntax

Top method improvements (percentages):
       -3.35 (-10.89% of base) : 237488.dasm - System.Threading.Tasks.Dataflow.ActionBlock`1[Byte][System.Byte]:get_InputCountForDebugger():int:this
       -2.40 (-10.74% of base) : 237818.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Int32][System.Int32]:get_ValueForDebugger():int:this
       -2.40 (-10.69% of base) : 237805.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Byte][System.Byte]:get_HasValueForDebugger():bool:this
       -2.40 (-10.69% of base) : 237806.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Byte][System.Byte]:get_ValueForDebugger():ubyte:this
       -2.40 (-10.69% of base) : 237827.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Int64][System.Int64]:get_ValueForDebugger():long:this
       -3.50 (-10.43% of base) : 145631.dasm - System.Xml.Xsl.XsltOld.InputScopeManager:PushScope():System.Xml.Xsl.XsltOld.InputScope:this
       -2.40 (-9.78% of base) : 237815.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Int16][System.Int16]:get_ValueForDebugger():short:this
       -2.40 (-9.70% of base) : 237851.dasm - DebugView[Int32][System.Int32]:get_Value():int:this
       -2.40 (-9.66% of base) : 237840.dasm - DebugView[Byte][System.Byte]:get_HasValue():bool:this
       -2.40 (-9.66% of base) : 237841.dasm - DebugView[Byte][System.Byte]:get_Value():ubyte:this
       -2.40 (-9.66% of base) : 237854.dasm - DebugView[Int64][System.Int64]:get_Value():long:this
       -3.37 (-9.48% of base) : 54440.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundNodeFinder:ContainsNode(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundNode,int,bool):bool
       -2.40 (-9.25% of base) : 237821.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1[Double][System.Double]:get_ValueForDebugger():double:this
       -2.40 (-8.91% of base) : 237850.dasm - DebugView[Int16][System.Int16]:get_Value():short:this
       -2.40 (-8.84% of base) : 237564.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1[Byte][System.Byte]:get_OutputCountForDebugger():int:this
       -2.40 (-8.84% of base) : 237722.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
       -2.40 (-8.84% of base) : 237987.dasm - System.Threading.Tasks.Dataflow.BufferBlock`1[Byte][System.Byte]:get_CountForDebugger():int:this
       -2.40 (-8.84% of base) : 238069.dasm - System.Threading.Tasks.Dataflow.JoinBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
       -2.40 (-8.84% of base) : 238128.dasm - System.Threading.Tasks.Dataflow.TransformBlock`2[__Canon,Nullable`1][System.__Canon,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this
       -2.40 (-8.84% of base) : 238153.dasm - System.Threading.Tasks.Dataflow.TransformBlock`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_OutputCountForDebugger():int:this

548 total methods with Perf Score differences (297 improved, 251 regressed), 0 unchanged.

Copy link
Member

Choose a reason for hiding this comment

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

Do the diffs generally look bad? Since perf score is better we might consider taking it anyway. The size increase is not that significant to me.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've analyzed top (~12) PerfScore regressions in the benchmarks on Win-x64, nothing stands out as "definitely bad", the common theme is that we save an additional register (in prolog/epilog) to enregister a CSE. There was one case where a CSE was "live across a call", thus spilled/reloaded for no benefit, but we didn't quite know that in the heuristic because the call in question was a write barrier.

I then took a more cursory look at the tests collection on x86, and found a few quite questionable cases (the worst), though overall the size diff was positive (-100K).

Finally, I took a look at Win-x64 tests collection, and found a problem that is similar to the one above: diff, where we save/restore (a lot) for a simple (FP) CSE.

Win-Arm64 collections do not appear to have particularly bad examples.

Copy link
Member

Choose a reason for hiding this comment

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

It sounds to me like taking the full general check is fine then, percentage wise the perfscore vs size diff is leaning to the good side, and the bad examples look to be in artificial test cases.


// Add the NullPtrExc to "tree"'s value numbers.
tree->gtVNPair = vnStore->VNPWithExc(tree->gtVNPair, excChkSet);
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/valuenumfuncs.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ ValueNumFuncDef(NotAField, 0, false, false, false) // Value number function for
ValueNumFuncDef(PtrToLoc, 2, false, true, false) // Pointer (byref) to a local variable. Args: VN's of: 0: var num, 1: FieldSeq.
ValueNumFuncDef(PtrToArrElem, 4, false, false, false) // Pointer (byref) to an array element. Args: 0: array elem type eq class var_types value, VN's of: 1: array, 2: index, 3: FieldSeq.
ValueNumFuncDef(PtrToStatic, 2, false, true, false) // Pointer (byref) to a static variable (or possibly a field thereof, if the static variable is a struct).
// Args: 0: (VN of) the field handle, 1: the field sequence, of which the first element is the static itself.
// Args: 0: (VN of) the box's address if the static is "boxed", 1: the field sequence, of which the first element is the static itself.

ValueNumFuncDef(Phi, 2, false, false, false) // A phi function. Only occurs as arg of PhiDef or PhiMemoryDef. Arguments are SSA numbers of var being defined.
ValueNumFuncDef(PhiDef, 3, false, false, false) // Args: 0: local var # (or -1 for memory), 1: SSA #, 2: VN of definition.
Expand Down
10 changes: 10 additions & 0 deletions src/coreclr/jit/valuenumtype.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,16 @@ struct ValueNumPair
m_conservative = vn;
}

bool operator==(const ValueNumPair& other)
{
return (m_liberal == other.m_liberal) && (m_conservative == other.m_conservative);
}

bool operator!=(const ValueNumPair& other)
{
return !(*this == other);
}
SingleAccretion marked this conversation as resolved.
Show resolved Hide resolved

void operator=(const ValueNumPair& vn2)
{
m_liberal = vn2.m_liberal;
Expand Down