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

Cse tuning #1463

Merged
merged 17 commits into from
Jan 15, 2020
Merged

Cse tuning #1463

merged 17 commits into from
Jan 15, 2020

Conversation

briansull
Copy link
Contributor

Tuning of the CSE hueristic

1. Changed csdLiveAcrossCall to a bool (zero-diff)
x64  5 improvements 0 regressions,  Total PerfScore diff: -10.72
x86 16 improvements 5 regressions,  Total PerfScore diff: -72.95
… two.

    x64 250 improvements 51 regressions,  Total PerfScore diff:   -459.09
  arm64 162 improvements 16 regressions,  Total PerfScore diff:  -1712.52
     x64 280 improvements 81 regressions,  Total PerfScore diff:   -274.78
   arm64 264 improvements 61 regressions,  Total PerfScore diff:   -911.00
     x86  87 improvements 42 regressions,  Total PerfScore diff:   -123.46
   arm32 195 improvements 81 regressions,  Total PerfScore diff:   -239.10
      x64 125 improvements 136 regressions, Total PerfScore diff:   +427.43
    arm64  83 improvements 153 regressions, Total PerfScore diff:   +260.68
      x86 218 improvements 193 regressions, Total PerfScore diff:   +199.81
    arm32 145 improvements 181 regressions, Total PerfScore diff: -33283.10

arm32 method with improvement:
    -33864.40 (-2.87% of base) : System.Private.CoreLib.dasm - TypeBuilder:CreateTypeNoLock():TypeInfo:this (2 methods)
      x64  61 improvements  61 regressions, Total PerfScore diff:   -189.03
    arm64  90 improvements  49 regressions, Total PerfScore diff:   -463.42
      x86  88 improvements  80 regressions, Total PerfScore diff:   -238.61
    arm32 101 improvements  63 regressions, Total PerfScore diff:   -259.50
…ditional caller save register

          x64  73 improvements  45 regressions, Total PerfScore diff:   -279.88
        arm64  45 improvements  76 regressions, Total PerfScore diff:    -90.94
          x86  13 improvements  14 regressions, Total PerfScore diff:    -21.55
        arm32  45 improvements  33 regressions, Total PerfScore diff:    -78.60
…he cse def/use cost for SMALL_CODE

   No diffs in System.Private.Corelib
…or a hugeFrame

       x64 199 improvements  50 regressions, Total PerfScore diff:   -2061.36
     arm64  11 improvements   3 regressions, Total PerfScore diff:     -46.84
       x86 136 improvements  80 regressions, Total PerfScore diff:   -1795.00
     arm32  50 improvements  35 regressions, Total PerfScore diff:    -132.30
@briansull
Copy link
Contributor Author

Benchmark Perf Score diff report:

Crossgen PerfScore Diffs for benchstones and benchmarks game in D:\fxkit\runtime\artifacts\tests\coreclr\Windows_NT.x64.Release for x64 default jit
Summary of Perf Score diffs:
(Lower is better)
Total PerfScoreUnits of diff: -3144.49 (-0.50% of base)
    diff is an improvement.

Top file regressions (PerfScoreUnits):
        9.31 : BenchmarksGame\fannkuch-redux\fannkuch-redux-5\fannkuch-redux-5.dasm (0.23% of base)
        7.60 : Benchstones\BenchF\MatInv4\MatInv4\MatInv4.dasm (0.05% of base)
        3.28 : Benchstones\BenchI\TreeSort\TreeSort\TreeSort.dasm (0.57% of base)
        0.75 : SIMD\SeekUnroll\SeekUnroll\SeekUnroll.dasm (0.10% of base)
        0.65 : BenchmarksGame\k-nucleotide\k-nucleotide-9\k-nucleotide-9.dasm (0.01% of base)
        0.62 : Span\Indexer\Indexer.dasm (0.00% of base)
Top file improvements (PerfScoreUnits):
    -1250.77 : Bytemark\Bytemark\Bytemark.dasm (-0.77% of base)
     -570.40 : Benchstones\BenchI\Array2\Array2\Array2.dasm (-1.92% of base)
     -425.65 : Benchstones\BenchF\LLoops\LLoops\LLoops.dasm (-1.30% of base)
     -395.80 : SciMark\SciMark\SciMark.dasm (-1.05% of base)
     -204.40 : Benchstones\BenchI\MulMatrix\MulMatrix\MulMatrix.dasm (-0.57% of base)
      -68.70 : Benchstones\BenchF\InProd\InProd\InProd.dasm (-0.70% of base)
      -64.60 : Benchstones\BenchF\Romber\Romber\Romber.dasm (-0.72% of base)
      -40.50 : BenchmarksGame\reverse-complement\reverse-complement-1\reverse-complement-1.dasm (-1.44% of base)
      -31.22 : BenchmarksGame\n-body\n-body-3\n-body-3.dasm (-0.91% of base)
      -25.90 : Benchstones\BenchF\InvMt\InvMt\InvMt.dasm (-0.74% of base)
      -21.65 : SIMD\RayTracer\RayTracer\RayTracer.dasm (-0.19% of base)
      -18.65 : Benchstones\BenchI\Puzzle\Puzzle\Puzzle.dasm (-0.13% of base)
      -16.70 : Benchstones\BenchF\SqMtx\SqMtx\SqMtx.dasm (-0.63% of base)

33 total files with Perf Score differences (27 improved, 6 regressed), 49 unchanged.
Top method regressions (PerfScoreUnits):
       18.00 ( 1.28% of base) : Bytemark\Bytemark\Bytemark.dasm - NeuralJagged:adjust_mid_wts(int)
       17.43 ( 0.91% of base) : BenchmarksGame\fannkuch-redux\fannkuch-redux-5\fannkuch-redux-5.dasm - FannkuchRedux_5:run(int,int,int)
       14.70 ( 1.08% of base) : V8\Crypto\Crypto\Crypto.dasm - RSAKey:generate(int,String):this
       14.40 ( 1.63% of base) : Bytemark\Bytemark\Bytemark.dasm - NeuralJagged:move_wt_changes()
        7.60 ( 0.14% of base) : Benchstones\BenchF\MatInv4\MatInv4\MatInv4.dasm - MatInv4:MinV2(ref,byref,byref,ref,ref)
        3.85 ( 0.21% of base) : SIMD\RayTracer\RayTracer\RayTracer.dasm - RayTracer:GetNaturalColor(SceneObject,Vector,Vector,Vector,Scene):Color:this
        3.70 ( 0.34% of base) : Bytemark\Bytemark\Bytemark.dasm - Fourier:DoFPUTransIteration(ref,ref,int):long
        3.20 ( 2.02% of base) : Bytemark\Bytemark\Bytemark.dasm - StringSort:strsift(ref,int,int)
        1.98 ( 4.52% of base) : Benchstones\BenchI\TreeSort\TreeSort\TreeSort.dasm - TreeSort:Insert(int,Node)
        1.30 ( 1.31% of base) : Benchstones\BenchI\TreeSort\TreeSort\TreeSort.dasm - TreeSort:InitArray(ref)

Top method improvements (PerfScoreUnits):
     -740.70 (-4.04% of base) : Bytemark\Bytemark\Bytemark.dasm - LUDecomp:ludcmp(ref,int,ref,byref):int
     -454.80 (-2.28% of base) : Benchstones\BenchI\Array2\Array2\Array2.dasm - Array2:Bench(int):bool
     -346.60 (-18.72% of base) : SciMark\SciMark\SciMark.dasm - Random:nextDoubles(ref):this
     -266.25 (-1.05% of base) : Benchstones\BenchF\LLoops\LLoops\LLoops.dasm - LLoops:Main1(int):this
     -204.40 (-0.58% of base) : Benchstones\BenchI\MulMatrix\MulMatrix\MulMatrix.dasm - MulMatrix:Inner(ref,ref,ref)
     -164.60 (-4.23% of base) : Bytemark\Bytemark\Bytemark.dasm - NeuralJagged:read_data_file():this
     -159.40 (-2.92% of base) : Benchstones\BenchF\LLoops\LLoops\LLoops.dasm - LLoops:Init():this
     -127.85 (-1.45% of base) : Bytemark\Bytemark\Bytemark.dasm - AssignJagged:second_assignments(ref,ref)
     -115.60 (-2.12% of base) : Benchstones\BenchI\Array2\Array2\Array2.dasm - Array2:VerifyCopy(ref,ref):bool
      -65.50 (-0.87% of base) : Benchstones\BenchF\InProd\InProd\InProd.dasm - InProd:Bench():bool
      -64.60 (-0.75% of base) : Benchstones\BenchF\Romber\Romber\Romber.dasm - Romber:Bench():bool
      -52.40 (-6.79% of base) : Bytemark\Bytemark\Bytemark.dasm - IDEAEncryption:cipher_idea(ref,ref,int,ref)
      -42.20 (-0.93% of base) : SciMark\SciMark\SciMark.dasm - LU:factor(ref,ref):int
      -40.50 (-2.94% of base) : BenchmarksGame\reverse-complement\reverse-complement-1\reverse-complement-1.dasm - ReverseComplement_1:Bench(Stream,Stream)
      -32.30 (-1.24% of base) : Bytemark\Bytemark\Bytemark.dasm - EMFloat:InternalFPFToString(byref,byref):int
      -30.60 (-2.78% of base) : BenchmarksGame\n-body\n-body-3\n-body-3.dasm - NBodySystem:.ctor():this
      -25.70 (-1.08% of base) : Bytemark\Bytemark\Bytemark.dasm - LUDecomp:Run():double:this
      -25.30 (-0.19% of base) : Bytemark\Bytemark\Bytemark.dasm - AssignRect:second_assignments(ref,ref)
      -23.92 (-4.38% of base) : Bytemark\Bytemark\Bytemark.dasm - EMFloatClass:AddSubInternalFPF(ubyte,InternalFPF,InternalFPF,InternalFPF)
      -23.30 (-4.20% of base) : Bytemark\Bytemark\Bytemark.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref)
      -21.60 (-2.07% of base) : Benchstones\BenchF\InvMt\InvMt\InvMt.dasm - InvMt:Bench():bool
      -19.40 (-4.17% of base) : V8\Crypto\Crypto\Crypto.dasm - BigInteger:squareTo(BigInteger):this
      -18.65 (-0.15% of base) : Benchstones\BenchI\Puzzle\Puzzle\Puzzle.dasm - Puzzle:DoIt():bool:this
      -16.70 (-0.82% of base) : Benchstones\BenchF\SqMtx\SqMtx\SqMtx.dasm - SqMtx:Inner(ref,ref,int)
      -15.90 (-0.92% of base) : Bytemark\Bytemark\Bytemark.dasm - ByteMark:ExecuteCore(ref):int:this
      -12.90 (-0.24% of base) : Bytemark\Bytemark\Bytemark.dasm - LUDecomp:DoLUIteration(ref,ref,ref,ref,int):long

Top method regressions (percentages):
        1.98 ( 4.52% of base) : Benchstones\BenchI\TreeSort\TreeSort\TreeSort.dasm - TreeSort:Insert(int,Node)
        3.20 ( 2.02% of base) : Bytemark\Bytemark\Bytemark.dasm - StringSort:strsift(ref,int,int)
        0.30 ( 1.70% of base) : Bytemark\Bytemark\Bytemark.dasm - IDEAEncryption:mul(ushort,ushort):ushort
        0.65 ( 1.66% of base) : BenchmarksGame\k-nucleotide\k-nucleotide-9\k-nucleotide-9.dasm - KNucleotide_9:check(Dictionary`2,byref,ubyte,long)
       14.40 ( 1.63% of base) : Bytemark\Bytemark\Bytemark.dasm - NeuralJagged:move_wt_changes()
        0.35 ( 1.36% of base) : BenchmarksGame\binarytrees\binarytrees-2\binarytrees-2.dasm - TreeNode:bottomUpTree(int):TreeNode
        1.30 ( 1.31% of base) : Benchstones\BenchI\TreeSort\TreeSort\TreeSort.dasm - TreeSort:InitArray(ref)
       18.00 ( 1.28% of base) : Bytemark\Bytemark\Bytemark.dasm - NeuralJagged:adjust_mid_wts(int)
       14.70 ( 1.08% of base) : V8\Crypto\Crypto\Crypto.dasm - RSAKey:generate(int,String):this
       17.43 ( 0.91% of base) : BenchmarksGame\fannkuch-redux\fannkuch-redux-5\fannkuch-redux-5.dasm - FannkuchRedux_5:run(int,int,int)

Top method improvements (percentages):
     -346.60 (-18.72% of base) : SciMark\SciMark\SciMark.dasm - Random:nextDoubles(ref):this
      -52.40 (-6.79% of base) : Bytemark\Bytemark\Bytemark.dasm - IDEAEncryption:cipher_idea(ref,ref,int,ref)
      -23.92 (-4.38% of base) : Bytemark\Bytemark\Bytemark.dasm - EMFloatClass:AddSubInternalFPF(ubyte,InternalFPF,InternalFPF,InternalFPF)
     -164.60 (-4.23% of base) : Bytemark\Bytemark\Bytemark.dasm - NeuralJagged:read_data_file():this
      -23.30 (-4.20% of base) : Bytemark\Bytemark\Bytemark.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref)
      -19.40 (-4.17% of base) : V8\Crypto\Crypto\Crypto.dasm - BigInteger:squareTo(BigInteger):this
     -740.70 (-4.04% of base) : Bytemark\Bytemark\Bytemark.dasm - LUDecomp:ludcmp(ref,int,ref,byref):int
       -0.62 (-3.41% of base) : BenchmarksGame\binarytrees\binarytrees-2\binarytrees-2.dasm - BinaryTrees_2:Main(ref):int
       -0.63 (-3.27% of base) : BenchmarksGame\binarytrees\binarytrees-5\binarytrees-5.dasm - BinaryTrees_5:Main(ref):int
       -0.62 (-3.22% of base) : BenchmarksGame\fannkuch-redux\fannkuch-redux-5\fannkuch-redux-5.dasm - FannkuchRedux_5:Main(ref):int
       -0.95 (-3.18% of base) : V8\Richards\Richards\Richards.dasm - TaskControlBlock:checkPriorityAdd(TaskControlBlock,Packet):TaskControlBlock:this
      -40.50 (-2.94% of base) : BenchmarksGame\reverse-complement\reverse-complement-1\reverse-complement-1.dasm - ReverseComplement_1:Bench(Stream,Stream)
     -159.40 (-2.92% of base) : Benchstones\BenchF\LLoops\LLoops\LLoops.dasm - LLoops:Init():this
      -30.60 (-2.78% of base) : BenchmarksGame\n-body\n-body-3\n-body-3.dasm - NBodySystem:.ctor():this
       -0.62 (-2.74% of base) : BenchmarksGame\n-body\n-body-3\n-body-3.dasm - NBody_3:Main(ref):int
       -4.50 (-2.34% of base) : BenchmarksGame\fasta\fasta-1\fasta-1.dasm - Fasta_1:.cctor()
     -454.80 (-2.28% of base) : Benchstones\BenchI\Array2\Array2\Array2.dasm - Array2:Bench(int):bool
       -9.40 (-2.16% of base) : SIMD\RayTracer\RayTracer\RayTracer.dasm - <>c__DisplayClass5_0:<RenderParallel>b__0(int):this
     -115.60 (-2.12% of base) : Benchstones\BenchI\Array2\Array2\Array2.dasm - Array2:VerifyCopy(ref,ref):bool
      -21.60 (-2.07% of base) : Benchstones\BenchF\InvMt\InvMt\InvMt.dasm - InvMt:Bench():bool
       -9.40 (-2.04% of base) : SIMD\RayTracer\RayTracer\RayTracer.dasm - <>c__DisplayClass6_0:<RenderParallelShowingThreads>b__1(int,ParallelLoopState,float):float:this
       -0.85 (-1.76% of base) : BenchmarksGame\binarytrees\binarytrees-2\binarytrees-2.dasm - TreeNode:itemCheck():int:this
       -0.85 (-1.76% of base) : BenchmarksGame\binarytrees\binarytrees-5\binarytrees-5.dasm - TreeNode:CountNodes():int:this
     -127.85 (-1.45% of base) : Bytemark\Bytemark\Bytemark.dasm - AssignJagged:second_assignments(ref,ref)

89 total methods with Perf Score differences (66 improved, 23 regressed), 1689 unchanged.

@briansull
Copy link
Contributor Author

System.Private.Corelib Perf Score diff report:

Crossgen PerfScore Diffs for System.Private.CoreLib.dll for x64 default jit

Total PerfScoreUnits of diff: -2821.00 (-0.13% of base)
    diff is an improvement.

Top file improvements (PerfScoreUnits):
    -2821.00 : System.Private.CoreLib.dasm (-0.13% of base)

Top method regressions (PerfScoreUnits):
      143.90 ( 1.12% of base) : System.Private.CoreLib.dasm - IdnMapping:PunycodeDecode(String):String
       93.95 ( 3.21% of base) : System.Private.CoreLib.dasm - DefaultBinder:SelectProperty(int,ref,Type,ref,ref):PropertyInfo:this
       55.80 ( 2.26% of base) : System.Private.CoreLib.dasm - CustomAttributeBuilder:InitCustomAttributeBuilder(ConstructorInfo,ref,ref,ref,ref,ref):this
       35.55 ( 1.89% of base) : System.Private.CoreLib.dasm - MethodBuilder:CreateMethodBodyHelper(ILGenerator):this
       25.53 ( 4.58% of base) : System.Private.CoreLib.dasm - StartupHookProvider:ProcessStartupHooks()
       25.20 ( 0.74% of base) : System.Private.CoreLib.dasm - ArraySortHelper`1:IntroSort(Span`1,int,Comparison`1) (15 methods)
       23.10 ( 0.99% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`1:IntroSort(Span`1,int) (12 methods)
       19.25 ( 2.07% of base) : System.Private.CoreLib.dasm - Task:RunContinuations(Object):this
       18.10 ( 3.78% of base) : System.Private.CoreLib.dasm - TypedReference:MakeTypedReference(Object,ref):TypedReference
       16.40 ( 1.39% of base) : System.Private.CoreLib.dasm - BigInteger:DivRem(byref,byref,byref,byref)
       16.00 ( 4.33% of base) : System.Private.CoreLib.dasm - MethodBuilder:DefineGenericParameters(ref):ref:this
       16.00 ( 5.07% of base) : System.Private.CoreLib.dasm - TypeBuilder:DefineGenericParameters(ref):ref:this
       15.45 ( 1.13% of base) : System.Private.CoreLib.dasm - EventProvider:WriteEvent(byref,long,long,long,ref):bool:this
       15.40 ( 2.31% of base) : System.Private.CoreLib.dasm - ReaderWriterLockSlim:TryEnterWriteLockCore(TimeoutTracker):bool:this
       15.20 ( 3.18% of base) : System.Private.CoreLib.dasm - String:MakeSeparatorList(ReadOnlySpan`1,byref):this
       14.80 ( 2.90% of base) : System.Private.CoreLib.dasm - TypeBuilder:.ctor(String,int,Type,ref,ModuleBuilder,int,int,TypeBuilder):this
       14.00 ( 2.11% of base) : System.Private.CoreLib.dasm - SorterObjectArray:InsertionSort(int,int):this
       12.35 ( 1.69% of base) : System.Private.CoreLib.dasm - AssemblyNameFormatter:AppendQuoted(StringBuilder,String)
       11.40 ( 1.10% of base) : System.Private.CoreLib.dasm - ModuleBuilder:GetMethodTokenNoLock(MethodInfo,bool):MethodToken:this
       11.07 ( 7.64% of base) : System.Private.CoreLib.dasm - Guid:TryParseExactD(ReadOnlySpan`1,byref):bool
       10.58 ( 8.77% of base) : System.Private.CoreLib.dasm - Guid:TryParseExactN(ReadOnlySpan`1,byref):bool

Top method improvements (PerfScoreUnits):
     -265.90 (-1.05% of base) : System.Private.CoreLib.dasm - IdnMapping:PunycodeEncode(String):String
     -246.30 (-0.68% of base) : System.Private.CoreLib.dasm - SorterGenericArray:InsertionSort(int,int):this
     -204.80 (-3.81% of base) : System.Private.CoreLib.dasm - ArraySortHelper`2:InsertionSort(Span`1,Span`1,IComparer`1) (11 methods)
     -133.30 (-3.91% of base) : System.Private.CoreLib.dasm - DefaultBinder:SelectMethod(int,ref,ref,ref):MethodBase:this
     -122.49 (-4.34% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:PickPivotAndPartition(Span`1,Span`1):int (11 methods)
      -83.60 (-0.96% of base) : System.Private.CoreLib.dasm - <ReadAsyncInternal>d__64:MoveNext():this
      -79.85 (-2.49% of base) : System.Private.CoreLib.dasm - CancellationTokenSource:ExecuteCallbackHandlers(bool):this
      -79.40 (-0.52% of base) : System.Private.CoreLib.dasm - DefaultBinder:BindToMethod(int,ref,byref,ref,CultureInfo,ref,byref):MethodBase:this
      -59.30 (-4.31% of base) : System.Private.CoreLib.dasm - UnicodeEncoding:GetBytes(long,int,long,int,EncoderNLS):int:this
      -56.46 (-0.80% of base) : System.Private.CoreLib.dasm - Number:NumberToStringFormat(byref,byref,ReadOnlySpan`1,NumberFormatInfo)
      -53.30 (-5.88% of base) : System.Private.CoreLib.dasm - StreamWriter:WriteFormatHelper(String,ParamsArray,bool):this
      -52.95 (-4.27% of base) : System.Private.CoreLib.dasm - EventPipePayloadDecoder:DecodePayload(byref,ReadOnlySpan`1):ref
      -42.90 (-0.63% of base) : System.Private.CoreLib.dasm - TimeSpanFormat:FormatCustomized(TimeSpan,ReadOnlySpan`1,DateTimeFormatInfo,StringBuilder):StringBuilder
      -42.60 (-2.66% of base) : System.Private.CoreLib.dasm - <WriteAsyncInternal>d__63:MoveNext():this
      -38.75 (-3.79% of base) : System.Private.CoreLib.dasm - UTF7Encoding:GetBytes(long,int,long,int,EncoderNLS):int:this
      -37.31 (-3.25% of base) : System.Private.CoreLib.dasm - TlsOverPerCoreLockedStacksArrayPool`1:Return(ref,bool):this (4 methods)
      -34.61 (-1.23% of base) : System.Private.CoreLib.dasm - ArraySortHelper`2:PickPivotAndPartition(Span`1,Span`1,IComparer`1):int (11 methods)
      -33.30 (-1.01% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:IntroSort(Span`1,Span`1,int) (11 methods)
      -33.01 (-0.71% of base) : System.Private.CoreLib.dasm - Vector256`1:ToString():String:this (11 methods)
      -31.40 (-0.91% of base) : System.Private.CoreLib.dasm - DateTimeFormat:FormatCustomized(DateTime,ReadOnlySpan`1,DateTimeFormatInfo,TimeSpan,StringBuilder):StringBuilder
      -29.60 (-4.02% of base) : System.Private.CoreLib.dasm - DateTimeFormatInfo:Tokenize(int,byref,byref,byref):bool:this
      -29.40 (-0.77% of base) : System.Private.CoreLib.dasm - <AsyncModeCopyToAsync>d__128:MoveNext():this
      -28.70 (-1.79% of base) : System.Private.CoreLib.dasm - MemberInfoCache`1:PopulateMethods(Filter):ref:this
      -27.40 (-3.81% of base) : System.Private.CoreLib.dasm - Convert:TryFromBase64Chars(ReadOnlySpan`1,Span`1,byref):bool
      -26.26 (-1.44% of base) : System.Private.CoreLib.dasm - EqualityComparer`1:System.Collections.IEqualityComparer.GetHashCode(Object):int:this (42 methods)
      -25.69 (-0.56% of base) : System.Private.CoreLib.dasm - Vector128`1:ToString():String:this (11 methods)
      -25.44 (-1.52% of base) : System.Private.CoreLib.dasm - MemberInfoCache`1:PopulateProperties(Filter,RuntimeType,Dictionary`2,ref,byref):this
      -25.40 (-1.60% of base) : System.Private.CoreLib.dasm - <WriteAsyncInternal>d__66:MoveNext():this

Top method regressions (percentages):
       10.58 ( 8.77% of base) : System.Private.CoreLib.dasm - Guid:TryParseExactN(ReadOnlySpan`1,byref):bool
        6.85 ( 8.71% of base) : System.Private.CoreLib.dasm - BigInteger:Multiply(byref,int,byref)
        1.62 ( 7.78% of base) : System.Private.CoreLib.dasm - Utf8String:Substring(int,int):Utf8String:this
       11.07 ( 7.64% of base) : System.Private.CoreLib.dasm - Guid:TryParseExactD(ReadOnlySpan`1,byref):bool
        2.47 ( 6.17% of base) : System.Private.CoreLib.dasm - ArrayListEnumerator:MoveNext():bool:this
        1.40 ( 5.68% of base) : System.Private.CoreLib.dasm - StandardTaskContinuation:GetDelegateContinuationsForDebugger():ref:this
       16.00 ( 5.07% of base) : System.Private.CoreLib.dasm - TypeBuilder:DefineGenericParameters(ref):ref:this
       25.53 ( 4.58% of base) : System.Private.CoreLib.dasm - StartupHookProvider:ProcessStartupHooks()
       16.00 ( 4.33% of base) : System.Private.CoreLib.dasm - MethodBuilder:DefineGenericParameters(ref):ref:this
        2.18 ( 3.97% of base) : System.Private.CoreLib.dasm - ArrayList:LastIndexOf(Object,int,int):int:this
        3.90 ( 3.95% of base) : System.Private.CoreLib.dasm - ValueTask`1:Equals(ValueTask`1):bool:this (3 methods)
       18.10 ( 3.78% of base) : System.Private.CoreLib.dasm - TypedReference:MakeTypedReference(Object,ref):TypedReference
        1.28 ( 3.41% of base) : System.Private.CoreLib.dasm - TimerQueue:UnlinkTimer(TimerQueueTimer):this
        1.17 ( 3.29% of base) : System.Private.CoreLib.dasm - Filter:Match(MdUtf8String):bool:this
       93.95 ( 3.21% of base) : System.Private.CoreLib.dasm - DefaultBinder:SelectProperty(int,ref,Type,ref,ref):PropertyInfo:this
       15.20 ( 3.18% of base) : System.Private.CoreLib.dasm - String:MakeSeparatorList(ReadOnlySpan`1,byref):this
        1.15 ( 2.92% of base) : System.Private.CoreLib.dasm - Random:InternalSample():int:this
       14.80 ( 2.90% of base) : System.Private.CoreLib.dasm - TypeBuilder:.ctor(String,int,Type,ref,ModuleBuilder,int,int,TypeBuilder):this
        5.80 ( 2.80% of base) : System.Private.CoreLib.dasm - StreamWriter:WriteLine(ReadOnlySpan`1):this

Top method improvements (percentages):
       -3.85 (-23.33% of base) : System.Private.CoreLib.dasm - TimeSpanTokenizer:get_NextChar():ushort:this
       -2.85 (-18.04% of base) : System.Private.CoreLib.dasm - List`1:Contains(long):bool:this
       -2.85 (-18.04% of base) : System.Private.CoreLib.dasm - List`1:Contains(EventRegistrationToken):bool:this
       -1.40 (-11.88% of base) : System.Private.CoreLib.dasm - EncodingCharBuffer:GetNextByte():ubyte:this
       -2.25 (-11.45% of base) : System.Private.CoreLib.dasm - ValueStringBuilder:Append(ushort):this
       -1.40 (-11.00% of base) : System.Private.CoreLib.dasm - ConstructorBuilder:get_ReflectedType():Type:this
       -1.40 (-11.00% of base) : System.Private.CoreLib.dasm - ConstructorBuilder:get_DeclaringType():Type:this
       -2.98 (-10.75% of base) : System.Private.CoreLib.dasm - StringParser:NextChar():this
       -0.85 (-10.14% of base) : System.Private.CoreLib.dasm - RuntimeType:get_CacheIfExists():RuntimeTypeCache:this
       -0.95 (-9.84% of base) : System.Private.CoreLib.dasm - ConcurrentExclusiveSchedulerPair:get_CompletionRequested():bool:this
       -0.85 (-9.63% of base) : System.Private.CoreLib.dasm - RegisteredWaitHandleSafe:ValidHandle():bool:this
       -0.85 (-9.31% of base) : System.Private.CoreLib.dasm - CriticalHandleZeroOrMinusOneIsInvalid:get_IsInvalid():bool:this
       -0.85 (-9.31% of base) : System.Private.CoreLib.dasm - SafeHandleZeroOrMinusOneIsInvalid:get_IsInvalid():bool:this
       -1.25 (-9.29% of base) : System.Private.CoreLib.dasm - StackFrameHelper:IsLastFrameFromForeignExceptionStackTrace(int):bool:this
       -2.55 (-8.52% of base) : System.Private.CoreLib.dasm - RuntimeMethodHandle:Equals(RuntimeMethodHandle):bool:this
       -2.55 (-8.52% of base) : System.Private.CoreLib.dasm - RuntimeFieldHandle:Equals(RuntimeFieldHandle):bool:this
       -0.85 (-8.00% of base) : System.Private.CoreLib.dasm - RuntimeConstructorInfo:get_ReflectedType():Type:this
       -0.85 (-8.00% of base) : System.Private.CoreLib.dasm - RuntimeFieldInfo:get_ReflectedType():Type:this
       -0.85 (-8.00% of base) : System.Private.CoreLib.dasm - RuntimeMethodInfo:get_ReflectedType():Type:this
       -0.85 (-7.66% of base) : System.Private.CoreLib.dasm - Variant:get_AsUnknown():Object:this
       -0.85 (-7.66% of base) : System.Private.CoreLib.dasm - Variant:get_AsDispatch():Object:this
       -2.25 (-7.53% of base) : System.Private.CoreLib.dasm - ValueStringBuilder:GrowAndAppend(ushort):this
       -0.95 (-7.45% of base) : System.Private.CoreLib.dasm - StackFrameHelper:GetLineNumber(int):int:this
       -0.95 (-7.45% of base) : System.Private.CoreLib.dasm - StackFrameHelper:GetColumnNumber(int):int:this
       -0.85 (-7.30% of base) : System.Private.CoreLib.dasm - CancellationToken:ThrowIfCancellationRequested():this
       -7.25 (-7.20% of base) : System.Private.CoreLib.dasm - EncoderNLS:GetBytes(ref,int,int,ref,int,bool):int:this
       -0.95 (-7.20% of base) : System.Private.CoreLib.dasm - WaitHandle:get_Handle():long:this
       -1.70 (-7.07% of base) : System.Private.CoreLib.dasm - QCallTypeHandle:.ctor(byref):this (2 methods)
       -0.95 (-6.83% of base) : System.Private.CoreLib.dasm - MethodBuilder:GetMaxStack():int:this
       -1.43 (-6.82% of base) : System.Private.CoreLib.dasm - Number:ExtractFractionAndBiasedExponent(float,byref):int
       -0.85 (-6.75% of base) : System.Private.CoreLib.dasm - RuntimeMethodHandle:get_Value():long:this
       -0.85 (-6.75% of base) : System.Private.CoreLib.dasm - RuntimeFieldHandle:get_Value():long:this
       -5.43 (-6.66% of base) : System.Private.CoreLib.dasm - StringBuilder:AppendSpanFormattable(int,String,IFormatProvider):StringBuilder:this
      -12.00 (-6.65% of base) : System.Private.CoreLib.dasm - Enum:ToObject(Type,Object):Object
       -3.88 (-6.56% of base) : System.Private.CoreLib.dasm - List`1:Contains(EventPipeProviderConfiguration):bool:this
       -0.85 (-6.51% of base) : System.Private.CoreLib.dasm - RuntimeType:get_GenericCache():Object:this
       -2.92 (-6.48% of base) : System.Private.CoreLib.dasm - ThreadPoolTaskScheduler:TryExecuteTaskInline(Task,bool):bool:this
       -0.85 (-6.44% of base) : System.Private.CoreLib.dasm - RuntimeType:get_Cache():RuntimeTypeCache:this
       -2.03 (-6.44% of base) : System.Private.CoreLib.dasm - TextInfo:ToLower(ushort):ushort:this
       -5.23 (-6.40% of base) : System.Private.CoreLib.dasm - StringBuilder:AppendSpanFormattable(long,String,IFormatProvider):StringBuilder:this
       -0.75 (-6.38% of base) : System.Private.CoreLib.dasm - DependentHandle:Free():this
       -2.03 (-6.38% of base) : System.Private.CoreLib.dasm - TextInfo:ToUpper(ushort):ushort:this
       -1.42 (-6.34% of base) : System.Private.CoreLib.dasm - Number:ExtractFractionAndBiasedExponent(double,byref):long
       -1.20 (-6.34% of base) : System.Private.CoreLib.dasm - AsyncLocal`1:get_Value():bool:this
       -0.82 (-6.19% of base) : System.Private.CoreLib.dasm - Overlapped:set_OffsetLow(int):this
       -0.82 (-6.19% of base) : System.Private.CoreLib.dasm - Overlapped:set_OffsetHigh(int):this
       -0.85 (-6.15% of base) : System.Private.CoreLib.dasm - ListBuilder`1:get_Item(int):__Canon:this
       -0.82 (-6.14% of base) : System.Private.CoreLib.dasm - Overlapped:set_EventHandleIntPtr(long):this
       -1.40 (-6.14% of base) : System.Private.CoreLib.dasm - ManyChunkInfo:MoveNext(byref):bool:this
       -0.53 (-6.11% of base) : System.Private.CoreLib.dasm - OverlappedData:get_OffsetLow():byref:this
       -0.53 (-6.11% of base) : System.Private.CoreLib.dasm - OverlappedData:get_OffsetHigh():byref:this
       -0.53 (-6.11% of base) : System.Private.CoreLib.dasm - OverlappedData:get_EventHandle():byref:this
       -0.82 (-5.90% of base) : System.Private.CoreLib.dasm - Overlapped:set_EventHandle(int):this
      -53.30 (-5.88% of base) : System.Private.CoreLib.dasm - StreamWriter:WriteFormatHelper(String,ParamsArray,bool):this
       -2.25 (-5.80% of base) : System.Private.CoreLib.dasm - UnmanagedBuffer:Allocate(int):UnmanagedBuffer
       -0.82 (-5.75% of base) : System.Private.CoreLib.dasm - Overlapped:get_OffsetLow():int:this
       -0.82 (-5.75% of base) : System.Private.CoreLib.dasm - Overlapped:get_OffsetHigh():int:this
       -0.82 (-5.71% of base) : System.Private.CoreLib.dasm - Overlapped:get_EventHandleIntPtr():long:this
       -0.75 (-5.64% of base) : System.Private.CoreLib.dasm - ModuleHandle:GetHashCode():int:this
       -2.05 (-5.62% of base) : System.Private.CoreLib.dasm - StringRuneEnumerator:MoveNext():bool:this

881 total methods with Perf Score differences (729 improved, 152 regressed), 19384 unchanged.

@briansull
Copy link
Contributor Author

@dotnet/jit-contrib PTAL

@erozenfeld
Copy link
Member

Can you also share code size diff reports?

@sandreenko sandreenko added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 9, 2020
Copy link
Contributor

@sandreenko sandreenko left a comment

Choose a reason for hiding this comment

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

Thank you very much for splitting that PR in such nice small commits.

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Show resolved Hide resolved
@@ -1707,7 +1707,11 @@ class CSE_Heuristic
{
varTyp = TYP_STRUCT;
}
enregCount += genTypeStSz(varTyp);
#ifdef _TARGET_64BIT_
Copy link
Contributor

Choose a reason for hiding this comment

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

I do not know what happens with structs here (especially with SIMD types), but I would prefer to see something like genTypeSize(varTyp)/TARGET_POINTER_SIZE or a new method in LclVarDsc.

Copy link
Contributor

Choose a reason for hiding this comment

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

I believe it's the case that either the struct is promoted, so only it's field lclVars are tracked, or it's a SIMD type, in which case it fits in a single register, or it's not (currently) a register candidate. Additional commenting here would be useful.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The genTypeSize(TYP_STRUCT) returns 0, also genTypeSize(TYP_SIMD16) returns 16, so we can't use the logic you suggest here.

I will add some comments and make the following change:

            enregCount++;  // The primitive types, including TYP_SIMD types use one register

#ifndef _TARGET_64BIT_
            if (varType == TYP_LONG)
            {
                enregCount++; // on 32-bit targets longs use two registers
            }
#endif

Copy link
Contributor

Choose a reason for hiding this comment

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

The previous block does if (varTypeIsStruct(varTyp)) varTyp = TYP_STRUCT; so we can't see TYP_SIMD8/16/32 here.
With the current impl for structs we will see enregCount += 1 on _TARGET_64BIT_ and enregCount += 0 in #else case for all structs/simd types. I do not understand that difference.

Copy link
Contributor

Choose a reason for hiding this comment

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

The code in the previous block was added to preserve old behavior, and should be changed as we tune CSE for optimizing struct types (including SIMD).

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
@@ -2159,13 +2159,13 @@ class CSE_Heuristic
#else // _TARGET_ARM_
if (hugeFrame)
{
cse_def_cost = 10 + (2 * slotCount); // movw/movt r10 and str reg,[sp+r10]
cse_use_cost = 10 + (2 * slotCount);
cse_def_cost = 10 + 2; // movw/movt r10 and str reg,[sp+r10]
Copy link
Contributor

Choose a reason for hiding this comment

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

there is a semantic change here, so it is not only refactor , are you aware of that?
Do you want to multiply 10 by slotCount?
Where do these consts come from?
Replace 10 + 2 with 12?

Copy link
Contributor Author

@briansull briansull Jan 10, 2020

Choose a reason for hiding this comment

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

Yes I am aware of this semantic change. It is actually correct, as the cost to generate load when we have a huge frame on ARM32 in terms of code size is 12 bytes for each slot.

For SMALL_CODE we measure the costs in terms of how many bytes of code will be generated.

It looks like I need to visit the code that set hugeFrame to ensure that it does not get set for ARM64. (and adjust the size for a largeFrame on ARM64)

In any case it is very rare that we are ever optimizing for SMALL_CODE as we only do so for class constructors.

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@CarolEidt CarolEidt left a comment

Choose a reason for hiding this comment

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

Seems reasonable. More comments would be helpful.

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
@@ -1578,12 +1578,12 @@ class CSE_Heuristic
sortTab = nullptr;
sortSiz = 0;

#ifdef _TARGET_XARCH_
#ifdef _TARGET_X86_
if (m_pCompiler->compLongUsed)
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure why this is needed at all, much less x86 only. Can you explain? It might make sense to count 2 regs for each long lclVar but I'm not sure why this just adds one.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It was needed by the old x86 tree based codegen.
It may no longer be needed with the RyuJIT based x86 codegen.

I will try removing it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removing this has positive results for x86

src/coreclr/src/jit/optcse.cpp Show resolved Hide resolved
@@ -1707,7 +1707,11 @@ class CSE_Heuristic
{
varTyp = TYP_STRUCT;
}
enregCount += genTypeStSz(varTyp);
#ifdef _TARGET_64BIT_
Copy link
Contributor

Choose a reason for hiding this comment

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

I believe it's the case that either the struct is promoted, so only it's field lclVars are tracked, or it's a SIMD type, in which case it fits in a single register, or it's not (currently) a register candidate. Additional commenting here would be useful.

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
Copy link
Contributor Author

@briansull briansull left a comment

Choose a reason for hiding this comment

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

@erozenfeld
Copy link
Member

There are quite a few methods with regressions (both code size and perf score). Have you measured the effect of individual commits to see if any of them are responsible for the majority of regressions?

Removed increment of enregCount on _TARGET_X86_ when we have compLongUsed:
    Framework diffs
    Total PerfScoreUnits of diff: -654.75 (-0.00% of base)  diff is an improvement.
    79 total methods with Perf Score differences (55 improved, 24 regressed), 146432 unchanged.

Fixed setting of largeFrame/hugeFrame for ARM64
    Zero framework diffs.

:
@@ -1578,25 +1578,25 @@ class CSE_Heuristic
sortTab = nullptr;
sortSiz = 0;

#ifdef _TARGET_XARCH_
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This now removed:

Removed increment of enregCount on _TARGET_X86_ when we have compLongUsed:
    Framework diffs
    Total PerfScoreUnits of diff: -654.75 (-0.00% of base)  diff is an improvement.
    79 total methods with Perf Score differences (55 improved, 24 regressed), 146432 unchanged.

}
#elif _TARGET_ARM64_
if (frameSize > 0x1000)
{
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed setting of largeFrame/hugeFrame for ARM64
    Zero framework diffs.

Copy link
Contributor

@CarolEidt CarolEidt left a comment

Choose a reason for hiding this comment

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

LGTM - only a few comment typos that could be corrected.
Thanks for the detailed comments!

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@sandreenko sandreenko left a comment

Choose a reason for hiding this comment

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

LGTM, thank you.

src/coreclr/src/jit/optcse.cpp Outdated Show resolved Hide resolved
@briansull briansull merged commit 8b59b12 into dotnet:master Jan 15, 2020
@briansull briansull deleted the cse-tuning branch January 15, 2020 21:30
@AndyAyersMS
Copy link
Member

Code size diffs and perf scores were only reported for SPC (and some benchmarks). Would have been good to show results over the full set of FX assemblies.

@briansull
Copy link
Contributor Author

I have the perf score and code size diffs for the full frameworks as well:

@briansull
Copy link
Contributor Author

Frameworks PerfScore diffs:

Crossgen PerfScore Diffs for System.Private.CoreLib.dll, framework assemblies for x64 default jit
Summary of Perf Score diffs:
(Lower is better)
Total PerfScoreUnits of diff: -59148.25 (-0.02% of base)
    diff is an improvement.

Top file regressions (PerfScoreUnits):
     1725.47 : Microsoft.CodeAnalysis.CSharp.dasm (0.01% of base)
     1642.55 : System.Net.Mail.dasm (1.10% of base)
     1619.33 : System.Net.Security.dasm (1.11% of base)
       56.70 : System.IO.FileSystem.dasm (0.16% of base)
        2.80 : System.Linq.Queryable.dasm (0.01% of base)
        2.50 : System.Drawing.Primitives.dasm (0.02% of base)
        2.27 : System.ComponentModel.Annotations.dasm (0.02% of base)
        2.17 : System.ObjectModel.dasm (0.03% of base)
        0.70 : System.IO.FileSystem.DriveInfo.dasm (0.04% of base)
        0.57 : xunit.performance.metrics.dasm (0.01% of base)

Top file improvements (PerfScoreUnits):
    -32000.14 : System.Data.Common.dasm (-0.44% of base)
    -6498.45 : System.Private.Xml.dasm (-0.39% of base)
    -6325.27 : Newtonsoft.Json.dasm (-0.00% of base)
    -4702.43 : Microsoft.Diagnostics.Tracing.TraceEvent.dasm (-0.30% of base)
    -3039.09 : System.Linq.Expressions.dasm (-0.29% of base)
    -2859.94 : System.Text.RegularExpressions.dasm (-2.10% of base)
    -2821.00 : System.Private.CoreLib.dasm (-0.13% of base)
    -1215.63 : Microsoft.CodeAnalysis.dasm (-0.04% of base)
     -604.40 : System.Net.Http.dasm (-0.30% of base)
     -551.86 : Microsoft.CodeAnalysis.VisualBasic.dasm (-0.04% of base)
     -401.78 : System.Private.Uri.dasm (-0.15% of base)
     -285.94 : System.Net.HttpListener.dasm (-0.32% of base)
     -252.88 : System.Private.DataContractSerialization.dasm (-0.08% of base)
     -155.40 : System.Reflection.Metadata.dasm (-0.12% of base)
     -148.50 : System.Threading.Tasks.Parallel.dasm (-0.83% of base)
     -145.26 : System.Runtime.Numerics.dasm (-0.37% of base)
     -142.37 : System.Text.Encoding.CodePages.dasm (-0.53% of base)
     -140.78 : System.Runtime.Serialization.Formatters.dasm (-0.25% of base)
     -129.50 : System.Net.WebHeaderCollection.dasm (-1.74% of base)
     -113.70 : System.Net.WebSockets.dasm (-0.62% of base)
     -112.04 : System.Memory.dasm (-0.27% of base)
     -110.72 : System.IO.Compression.dasm (-0.33% of base)
      -90.93 : System.Runtime.Extensions.dasm (-0.38% of base)
      -89.16 : System.Private.Xml.Linq.dasm (-0.14% of base)
      -81.78 : Microsoft.CSharp.dasm (-0.06% of base)
      -81.27 : System.Security.Cryptography.Algorithms.dasm (-0.08% of base)
      -78.86 : System.Security.Cryptography.Primitives.dasm (-0.60% of base)
      -75.62 : xunit.execution.dotnet.dasm (-0.07% of base)
      -74.52 : System.Linq.Parallel.dasm (-0.02% of base)
      -74.37 : System.Collections.Immutable.dasm (-0.08% of base)
      -60.28 : System.Web.HttpUtility.dasm (-0.92% of base)
      -59.07 : System.Net.Primitives.dasm (-0.16% of base)
      -52.45 : System.Net.WebClient.dasm (-0.28% of base)
      -52.16 : System.Security.Cryptography.Cng.dasm (-0.10% of base)
      -50.03 : System.Collections.dasm (-0.09% of base)

85 total files with Perf Score differences (75 improved, 10 regressed), 24 unchanged.
Top method regressions (PerfScoreUnits):
     3569.87 ( 1.68% of base) : Microsoft.CodeAnalysis.CSharp.dasm - LocalRewriter:BuildStoresToTemps(bool,ImmutableArray`1,ImmutableArray`1,ImmutableArray`1,ref,ArrayBuilder`1,ArrayBuilder`1):this
     1792.50 ( 2.34% of base) : System.Net.Mail.dasm - SSPIWrapper:EncryptDecryptHelper(int,ISSPIInterface,SafeDeleteContext,Span`1,int):int
     1792.50 ( 2.34% of base) : System.Net.Security.dasm - SSPIWrapper:EncryptDecryptHelper(int,ISSPIInterface,SafeDeleteContext,Span`1,int):int
      242.02 ( 4.40% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:ParseXmlDeclaration(bool):bool:this
      234.76 ( 0.91% of base) : Newtonsoft.Json.dasm - JsonTextReader:ReadStringIntoBuffer(ushort):this
      143.90 ( 1.12% of base) : System.Private.CoreLib.dasm - IdnMapping:PunycodeDecode(String):String
      128.60 ( 4.56% of base) : System.Private.Xml.dasm - XsltLoader:.ctor():this
      102.53 ( 0.83% of base) : System.IO.FileSystem.dasm - FileSystemName:MatchPattern(ReadOnlySpan`1,ReadOnlySpan`1,bool,bool):bool
       93.95 ( 3.21% of base) : System.Private.CoreLib.dasm - DefaultBinder:SelectProperty(int,ref,Type,ref,ref):PropertyInfo:this
       93.15 ( 0.76% of base) : System.Private.Xml.dasm - XmlSchemaValidator:EndElementIdentityConstraints(Object,String,XmlSchemaDatatype):this
       91.30 ( 5.09% of base) : System.Private.Uri.dasm - IriHelper:EscapeUnescapeIri(long,int,int,int):String
       57.10 ( 2.30% of base) : System.Private.DataContractSerialization.dasm - ClassDataContractCriticalHelper:ImportDataMembers():this
       55.80 ( 2.26% of base) : System.Private.CoreLib.dasm - CustomAttributeBuilder:InitCustomAttributeBuilder(ConstructorInfo,ref,ref,ref,ref,ref):this
       52.30 ( 3.19% of base) : System.Data.Common.dasm - DbDataAdapter:UpdateBatchExecute(ref,int,RowUpdatedEventArgs):this
       50.47 ( 3.87% of base) : System.Data.Common.dasm - SqlDecimal:op_Multiply(SqlDecimal,SqlDecimal):SqlDecimal
       42.85 ( 1.78% of base) : System.ComponentModel.TypeConverter.dasm - ReflectPropertyDescriptor:FillAttributes(IList):this
       37.75 ( 2.68% of base) : System.Runtime.Numerics.dasm - BigNumber:FormatBigInteger(bool,BigInteger,String,ReadOnlySpan`1,NumberFormatInfo,Span`1,byref,byref):String
       37.43 ( 1.46% of base) : System.Linq.Parallel.dasm - SortHelper`2:MergeSortCooperatively():this
       35.55 ( 1.89% of base) : System.Private.CoreLib.dasm - MethodBuilder:CreateMethodBodyHelper(ILGenerator):this
       33.20 ( 3.50% of base) : Microsoft.CSharp.dasm - ExprMethodInfo:get_MethodInfo():MethodInfo:this
       31.45 ( 3.43% of base) : System.Reflection.Metadata.dasm - MetadataReader:InitializeStreamReaders(byref,ref,byref,byref,byref):this

Top method improvements (PerfScoreUnits):
    -30858.62 (-0.46% of base) : System.Data.Common.dasm - XmlTreeGen:HandleTable(DataTable,XmlDocument,XmlElement,bool):XmlElement:this
    -5733.40 (-1.82% of base) : Newtonsoft.Json.dasm - <ReadStringIntoBufferAsync>d__9:MoveNext():this
    -2500.56 (-0.68% of base) : System.Linq.Expressions.dasm - FuncCallInstruction`3:Run(InterpretedFrame):int:this (3375 methods)
    -1981.60 (-3.38% of base) : System.Text.RegularExpressions.dasm - RegexInterpreter:Go():this
    -1368.80 (-1.79% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxToken:.cctor()
     -664.05 (-4.63% of base) : System.Private.Xml.dasm - <ParseXmlDeclarationAsync>d__506:MoveNext():this
     -586.02 (-1.17% of base) : Microsoft.CodeAnalysis.dasm - <DescendantTriviaOnly>d__160:MoveNext():bool:this
     -556.20 (-3.09% of base) : System.Text.RegularExpressions.dasm - RegexParser:ScanRegex():RegexNode:this
     -383.60 (-1.27% of base) : Microsoft.CodeAnalysis.dasm - <DescendantTriviaIntoTrivia>d__161:MoveNext():bool:this
     -316.30 (-0.98% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:IncrementalRead():int:this
     -265.90 (-1.05% of base) : System.Private.CoreLib.dasm - IdnMapping:PunycodeEncode(String):String
     -257.20 (-0.62% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - RegisteredTraceEventParser:GetManifestForRegisteredProvider(Guid):String
     -246.30 (-0.68% of base) : System.Private.CoreLib.dasm - SorterGenericArray:InsertionSort(int,int):this
     -226.03 (-1.89% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - SubstitutedNamedType:GetMembers_Worker(ImmutableArray`1):ImmutableArray`1:this
     -223.35 (-2.53% of base) : System.Private.Uri.dasm - UriHelper:MatchUTF8Sequence(byref,Span`1,int,ref,int,bool,bool)
     -204.80 (-3.81% of base) : System.Private.CoreLib.dasm - ArraySortHelper`2:InsertionSort(Span`1,Span`1,IComparer`1) (11 methods)
     -175.65 (-2.42% of base) : System.Private.Xml.dasm - XsltLoader:LoadInstructions(List`1,int):List`1:this
     -173.45 (-1.55% of base) : System.Private.Xml.dasm - XsdValidator:EndElementIdentityConstraints():this
     -163.71 (-0.77% of base) : System.Linq.Expressions.dasm - ActionCallInstruction`2:Run(InterpretedFrame):int:this (225 methods)
     -138.30 (-6.83% of base) : System.Net.WebHeaderCollection.dasm - HeaderInfoTable:CreateHeaderHashtable():Hashtable
     -133.30 (-3.91% of base) : System.Private.CoreLib.dasm - DefaultBinder:SelectMethod(int,ref,ref,ref):MethodBase:this
     -128.90 (-6.24% of base) : System.Text.RegularExpressions.dasm - RegexParser:ScanBlank():this
     -122.49 (-4.34% of base) : System.Private.CoreLib.dasm - GenericArraySortHelper`2:PickPivotAndPartition(Span`1,Span`1):int (11 methods)
     -120.68 (-1.95% of base) : System.Runtime.Numerics.dasm - Number:NumberToStringFormat(byref,byref,ReadOnlySpan`1,NumberFormatInfo)
     -120.00 (-2.25% of base) : System.Net.Http.dasm - <SendAsyncCore>d__53:MoveNext():this
     -110.80 (-1.14% of base) : System.Private.Xml.dasm - XmlSerializationWriterILGen:WriteEnumAndArrayTypes():this
     -107.80 (-1.68% of base) : System.Private.Xml.dasm - XmlSerializationReaderILGen:WriteEnumAndArrayTypes():this
     -107.00 (-1.76% of base) : System.Private.Xml.dasm - <ParseAttributesAsync>d__532:MoveNext():this
     -106.60 (-1.49% of base) : System.Private.Xml.dasm - XmlSerializationWriterCodeGen:WriteEnumAndArrayTypes():this
     -104.40 (-2.65% of base) : System.Private.Xml.dasm - XmlSerializationWriterCodeGen:GenerateMembersElement(XmlMembersMapping):String:this
     -103.45 (-3.85% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:ParseAttributes():this

Top method regressions (percentages):
        3.33 (21.69% of base) : System.Linq.Expressions.dasm - DynamicMetaObject:get_Value():Object:this
        1.60 (12.36% of base) : System.Private.Xml.dasm - PrefixQName:ValidatePrefix(String):bool
        2.53 ( 9.44% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxFactory:get_XmlCarriageReturnLineFeed():SyntaxToken
        3.78 ( 9.00% of base) : System.Linq.Expressions.dasm - LeaveExceptionHandlerInstruction:Create(int,bool):LeaveExceptionHandlerInstruction
       10.58 ( 8.77% of base) : System.Private.CoreLib.dasm - Guid:TryParseExactN(ReadOnlySpan`1,byref):bool
        6.85 ( 8.71% of base) : System.Private.CoreLib.dasm - BigInteger:Multiply(byref,int,byref)
        1.62 ( 7.78% of base) : System.Private.CoreLib.dasm - Utf8String:Substring(int,int):Utf8String:this
       11.07 ( 7.64% of base) : System.Private.CoreLib.dasm - Guid:TryParseExactD(ReadOnlySpan`1,byref):bool
        3.05 ( 7.34% of base) : System.Security.AccessControl.dasm - CommonAcl:GetInheritanceFlagsForRemoval(QualifiedAce,int,Guid,byref):bool:this
        3.05 ( 7.13% of base) : System.Security.AccessControl.dasm - CommonAcl:GetAccessMaskForRemoval(QualifiedAce,int,Guid,byref):bool:this
        2.30 ( 6.67% of base) : System.Private.Xml.dasm - XsltLoader:LoadEndTag(List`1):List`1:this
        1.40 ( 6.59% of base) : System.Linq.Queryable.dasm - <>c:<GetEquivalentType>b__7_2(<>f__AnonymousType0`2):bool:this
        1.40 ( 6.59% of base) : System.Linq.Queryable.dasm - <>c:<GetEquivalentType>b__7_4(<>f__AnonymousType0`2):bool:this
        1.70 ( 6.21% of base) : System.ComponentModel.Annotations.dasm - DataTypeAttribute:GetDataTypeName():String:this
        2.47 ( 6.17% of base) : System.Private.CoreLib.dasm - ArrayListEnumerator:MoveNext():bool:this
        1.28 ( 6.17% of base) : System.Private.DataContractSerialization.dasm - XmlCanonicalWriter:WriteText(int):this
        1.40 ( 6.01% of base) : Newtonsoft.Json.dasm - JsonSerializerInternalReader:HasNoDefinedType(JsonContract):bool:this
        1.17 ( 5.93% of base) : System.Collections.Immutable.dasm - ImmutableArrayExtensions:First(ImmutableArray`1):__Canon
        3.48 ( 5.78% of base) : System.Linq.Expressions.dasm - GotoInstruction:Create(int,bool,bool,bool):GotoInstruction
        1.40 ( 5.68% of base) : System.Private.CoreLib.dasm - StandardTaskContinuation:GetDelegateContinuationsForDebugger():ref:this
        1.73 ( 5.42% of base) : System.Private.DataContractSerialization.dasm - XmlBinaryNodeWriter:WriteText(String):this
        3.04 ( 5.38% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxFactory:XmlTextNewLine(CSharpSyntaxNode,String,String,CSharpSyntaxNode):SyntaxToken
        1.68 ( 5.37% of base) : System.Linq.Expressions.dasm - EnterFinallyInstruction:Create(int):EnterFinallyInstruction
        1.68 ( 5.37% of base) : System.Linq.Expressions.dasm - EnterFaultInstruction:Create(int):EnterFaultInstruction
        1.70 ( 5.18% of base) : System.Private.Xml.dasm - SingletonFocus:GetCurrent():QilNode:this
       91.30 ( 5.09% of base) : System.Private.Uri.dasm - IriHelper:EscapeUnescapeIri(long,int,int,int):String
       16.00 ( 5.07% of base) : System.Private.CoreLib.dasm - TypeBuilder:DefineGenericParameters(ref):ref:this
        3.55 ( 4.92% of base) : System.Private.Uri.dasm - Uri:CreateHostStringHelper(String,ushort,ushort,byref,byref):String
        0.95 ( 4.88% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - TimeHistogramController:CalculateScale():double:this
        3.35 ( 4.86% of base) : Microsoft.CodeAnalysis.CSharp.dasm - CodeGenerator:CodeForJump(BoundBinaryOperator,bool,byref):ushort
        1.63 ( 4.85% of base) : System.Private.Xml.dasm - XmlILOptimizerVisitor:IsGlobalValue(QilNode):bool:this
        5.80 ( 4.85% of base) : Microsoft.CSharp.dasm - MethodTypeInferrer:ExactTypeArgumentInference(AggregateType,AggregateType):this
        1.63 ( 4.64% of base) : System.Private.DataContractSerialization.dasm - ValueHandle:ToDateTime():DateTime:this
       25.53 ( 4.58% of base) : System.Private.CoreLib.dasm - StartupHookProvider:ProcessStartupHooks()
      128.60 ( 4.56% of base) : System.Private.Xml.dasm - XsltLoader:.ctor():this
       18.09 ( 4.55% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SourceNamedTypeSymbol:MakeDeclaredBases(ConsList`1,DiagnosticBag):Tuple`2:this
      242.02 ( 4.40% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:ParseXmlDeclaration(bool):bool:this
        1.25 ( 4.35% of base) : System.Net.Sockets.dasm - AcceptOverlappedAsyncResult:LogBuffer(long):this
       16.00 ( 4.33% of base) : System.Private.CoreLib.dasm - MethodBuilder:DefineGenericParameters(ref):ref:this
       20.50 ( 4.18% of base) : System.Data.Common.dasm - SqlDateTimeStorage:Aggregate(ref,int):Object:this
        1.63 ( 4.17% of base) : System.Private.DataContractSerialization.dasm - ValueHandle:ToGuid():Guid:this
        1.63 ( 4.10% of base) : System.Private.DataContractSerialization.dasm - ValueHandle:ToTimeSpan():TimeSpan:this

Top method improvements (percentages):
       -3.85 (-23.33% of base) : System.Private.CoreLib.dasm - TimeSpanTokenizer:get_NextChar():ushort:this
       -3.18 (-18.56% of base) : System.Reflection.Metadata.dasm - AssemblyReference:get_Culture():StringHandle:this
       -3.18 (-18.56% of base) : System.Reflection.Metadata.dasm - AssemblyReference:get_HashValue():BlobHandle:this
       -2.85 (-18.04% of base) : System.Private.CoreLib.dasm - List`1:Contains(long):bool:this
       -2.85 (-18.04% of base) : System.Private.CoreLib.dasm - List`1:Contains(EventRegistrationToken):bool:this
       -2.35 (-17.94% of base) : System.Net.Mail.dasm - MailMessage:get_Subject():String:this
       -3.65 (-15.67% of base) : System.Collections.dasm - BitHelper:IsMarked(int):bool:this
       -3.08 (-15.45% of base) : System.Reflection.Metadata.dasm - MethodDefinition:get_RelativeVirtualAddress():int:this
       -3.08 (-15.15% of base) : System.Reflection.Metadata.dasm - MemberReference:GetProjectedName():StringHandle:this
       -3.08 (-14.75% of base) : System.Reflection.Metadata.dasm - MethodDefinition:GetProjectedName():StringHandle:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - CustomAttribute:get_Value():BlobHandle:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - FieldDefinition:get_Attributes():int:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - MethodDefinition:get_Name():StringHandle:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - MethodDefinition:get_Attributes():int:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - MethodDefinition:get_ImplAttributes():int:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - TypeDefinition:get_Attributes():int:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - TypeDefinition:get_Name():StringHandle:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - TypeReference:get_ResolutionScope():EntityHandle:this
       -3.08 (-14.04% of base) : System.Reflection.Metadata.dasm - TypeReference:get_Namespace():StringHandle:this
       -2.46 (-14.04% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - SourceTypeParameterOnMethodSymbol:ReportRedundantConstraints():bool:this
       -2.95 (-13.66% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - TraceActivity:get_StartTimeRelativeMSec():double:this
       -2.95 (-13.66% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - TraceActivity:get_EndTimeRelativeMSec():double:this
       -2.95 (-13.66% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - TraceActivity:get_CreationTimeRelativeMSec():double:this
       -3.45 (-13.32% of base) : System.Threading.Tasks.Parallel.dasm - <>c__DisplayClass32_0`2:<ForEachWorker>b__4(int,ParallelLoopState,__Canon):__Canon:this
       -3.25 (-12.90% of base) : System.Collections.dasm - BitHelper:MarkBit(int):this
       -3.08 (-12.58% of base) : System.Reflection.Metadata.dasm - TypeDefinition:get_IsNested():bool:this
       -1.40 (-11.88% of base) : System.Private.CoreLib.dasm - EncodingCharBuffer:GetNextByte():ubyte:this
       -1.40 (-11.88% of base) : System.Text.Encoding.CodePages.dasm - EncodingCharBuffer:GetNextByte():ubyte:this
       -0.95 (-11.83% of base) : Microsoft.Diagnostics.Tracing.TraceEvent.dasm - TraceLoadedModule:get_ImageBase():long:this
       -0.95 (-11.83% of base) : System.Runtime.Serialization.Formatters.dasm - ObjectHolder:get_ContainerID():long:this
       -2.70 (-11.83% of base) : System.Private.Xml.dasm - XPathScanner:NextChar():bool:this
       -3.75 (-11.65% of base) : System.Private.Xml.dasm - XsltInput:IsXsltKeyword(String):bool:this
       -3.60 (-11.48% of base) : System.Private.Xml.dasm - TempAssemblyCacheKey:GetHashCode():int:this
       -2.25 (-11.45% of base) : System.IO.FileSystem.dasm - ValueStringBuilder:Append(ushort):this
       -2.25 (-11.45% of base) : System.Private.CoreLib.dasm - ValueStringBuilder:Append(ushort):this
       -2.25 (-11.45% of base) : System.Private.Uri.dasm - ValueStringBuilder:Append(ushort):this
       -2.25 (-11.45% of base) : System.Runtime.Extensions.dasm - ValueStringBuilder:Append(ushort):this
       -2.25 (-11.45% of base) : System.Runtime.Numerics.dasm - ValueStringBuilder:Append(ushort):this
       -2.25 (-11.45% of base) : System.Text.RegularExpressions.dasm - ValueStringBuilder:Append(ushort):this
      -31.25 (-11.21% of base) : System.Reflection.Metadata.dasm - MetadataAggregator:GetGenerationHandle(Handle,byref):Handle:this
       -1.22 (-11.14% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - _Closure$__7-0:_Lambda$__0(LocalDefUseSpan):bool:this
       -1.40 (-11.00% of base) : System.Private.CoreLib.dasm - ConstructorBuilder:get_ReflectedType():Type:this
       -1.40 (-11.00% of base) : System.Private.CoreLib.dasm - ConstructorBuilder:get_DeclaringType():Type:this
       -2.80 (-10.90% of base) : System.Linq.Expressions.dasm - ExpandoObject:IsDeletedMember(int):bool:this
       -2.98 (-10.75% of base) : System.Private.CoreLib.dasm - StringParser:NextChar():this
       -3.23 (-10.53% of base) : System.Linq.Expressions.dasm - MetaDynamic:GetDynamicMemberNames():IEnumerable`1:this
       -1.92 (-10.29% of base) : System.Private.DataContractSerialization.dasm - JsonDataContract:PushKnownDataContracts(XmlObjectSerializerContext):this
       -2.80 (-10.28% of base) : System.Private.Xml.Linq.dasm - XName:ToString():String:this
       -2.05 (-10.26% of base) : System.Private.Xml.dasm - Processor:SetDefaultOutput(int):bool:this
       -0.85 (-10.14% of base) : System.Private.CoreLib.dasm - RuntimeType:get_CacheIfExists():RuntimeTypeCache:this
       -3.40 (-10.00% of base) : System.Collections.dasm - SortedSet`1:HasEqualComparer(SortedSet`1):bool:this (2 methods)
       -0.95 (-9.84% of base) : System.Private.CoreLib.dasm - ConcurrentExclusiveSchedulerPair:get_CompletionRequested():bool:this
       -0.85 (-9.63% of base) : System.Private.CoreLib.dasm - RegisteredWaitHandleSafe:ValidHandle():bool:this
       -1.62 (-9.61% of base) : System.Data.Common.dasm - UniqueConstraint:get_Table():DataTable:this
       -1.40 (-9.36% of base) : System.Private.DataContractSerialization.dasm - IntArray:get_Item(int):int:this
       -0.85 (-9.31% of base) : System.Private.CoreLib.dasm - CriticalHandleZeroOrMinusOneIsInvalid:get_IsInvalid():bool:this
       -0.85 (-9.31% of base) : System.Private.CoreLib.dasm - SafeHandleZeroOrMinusOneIsInvalid:get_IsInvalid():bool:this
       -1.25 (-9.29% of base) : System.Private.CoreLib.dasm - StackFrameHelper:IsLastFrameFromForeignExceptionStackTrace(int):bool:this
       -1.50 (-9.26% of base) : System.Net.HttpListener.dasm - HttpListener:ValidateRequest(RequestContextBase):bool:this
       -2.54 (-9.26% of base) : CommandLine.dasm - <>c__1`1:<FormatCommandLine>b__1_5(<>f__AnonymousType7`2):bool:this
       -1.25 (-8.87% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:SendValidationEvent(int,XmlSchemaException):this
       -3.02 (-8.67% of base) : System.Private.DataContractSerialization.dasm - XmlBufferReader:GetBuffer(int,byref,byref):ref:this
       -0.95 (-8.65% of base) : System.Net.HttpListener.dasm - HttpResponseStreamAsyncResult:get_pDataChunks():long:this
       -0.95 (-8.60% of base) : System.Private.Xml.dasm - XmlSchemaInfo:get_HasDefaultValue():bool:this
       -0.85 (-8.56% of base) : System.Net.Mail.dasm - MailMessage:get_Priority():int:this
       -2.55 (-8.52% of base) : System.Private.CoreLib.dasm - RuntimeMethodHandle:Equals(RuntimeMethodHandle):bool:this
       -2.55 (-8.52% of base) : System.Private.CoreLib.dasm - RuntimeFieldHandle:Equals(RuntimeFieldHandle):bool:this
       -0.95 (-8.44% of base) : Newtonsoft.Json.dasm - JPropertyList:CopyTo(ref,int):this
       -1.78 (-8.36% of base) : System.Private.Xml.dasm - QilGenerator:GetCurrentNode():QilNode:this
       -5.25 (-8.28% of base) : System.Private.Xml.dasm - XmlSerializerMappingKey:GetHashCode():int:this
       -1.83 (-8.27% of base) : System.Private.Xml.dasm - XPathNode:get_Name():String:this
       -0.95 (-8.24% of base) : System.Net.Mail.dasm - SmtpClient:get_ServerSupportsEai():bool:this
      -24.35 (-8.19% of base) : System.Net.Http.dasm - RangeHeaderValue:ToString():String:this
       -4.00 (-8.16% of base) : System.Private.Xml.dasm - FloatingDecimal:InitFromDouble(double):this
       -0.85 (-8.00% of base) : System.Private.CoreLib.dasm - RuntimeConstructorInfo:get_ReflectedType():Type:this
       -0.85 (-8.00% of base) : System.Private.CoreLib.dasm - RuntimeFieldInfo:get_ReflectedType():Type:this
       -0.85 (-8.00% of base) : System.Private.CoreLib.dasm - RuntimeMethodInfo:get_ReflectedType():Type:this

8244 total methods with Perf Score differences (7430 improved, 814 regressed), 138361 unchanged.

@briansull
Copy link
Contributor Author

I also have before and after Asm and Dumps for many of the top regressions and improvements:

 Directory of D:\jit-diffs\runtime\x64\dasmset_21

01/07/2020  03:47 PM           611,832 CommonAcl.GetAccessMaskForRemoval.new.dump
01/07/2020  03:47 PM           611,831 CommonAcl.GetAccessMaskForRemoval.old.dump
01/07/2020  02:21 PM           633,079 CommonAcl.GetInheritanceFlagsForRemoval.new.dump
01/07/2020  02:21 PM           607,397 CommonAcl.GetInheritanceFlagsForRemoval.old.dump
01/07/2020  02:24 PM           319,381 DataTypeAttribute.GetDataTypeName.new.dump
01/07/2020  02:24 PM           329,093 DataTypeAttribute.GetDataTypeName.old.dump
01/07/2020  02:13 PM           164,743 DynamicMetaObject.get_Value.new.dump
01/07/2020  02:13 PM           166,582 DynamicMetaObject.get_Value.old.dump
01/07/2020  02:35 PM           511,140 EnterFinallyInstruction.Create.new.dump
01/07/2020  02:35 PM           518,407 EnterFinallyInstruction.Create.old.dump
01/07/2020  02:29 PM         1,111,012 GotoInstruction.Create.new.dump
01/07/2020  02:29 PM         1,114,889 GotoInstruction.Create.old.dump
01/07/2020  02:26 PM         1,220,025 ImmutableArrayExtensions.First.new.dump
01/07/2020  02:26 PM         1,211,639 ImmutableArrayExtensions.First.old.dump
01/07/2020  02:39 PM         7,162,231 IriHelper.EscapeUnescapeIri.new.dump
01/07/2020  02:39 PM         7,110,429 IriHelper.EscapeUnescapeIri.old.dump
01/07/2020  02:26 PM           274,210 JsonSerializerInternalReader.HasNoDefinedType.new.dump
01/07/2020  02:26 PM           277,101 JsonSerializerInternalReader.HasNoDefinedType.old.dump
01/07/2020  02:21 PM           733,924 LeaveExceptionHandlerInstruction.Create.new.dump
01/07/2020  02:21 PM           737,620 LeaveExceptionHandlerInstruction.Create.old.dump
01/08/2020  01:47 PM         3,555,065 LocalRewriter.BuildStoresToTemps.new.dump
01/08/2020  01:46 PM         3,540,782 LocalRewriter.BuildStoresToTemps.old.dump
01/07/2020  02:16 PM           175,123 PrefixQName.ValidatePrefix.new.dump
01/07/2020  02:16 PM           181,709 PrefixQName.ValidatePrefix.old.dump
01/07/2020  02:38 PM           435,700 SingletonFocus.GetCurrent.new.dump
01/07/2020  02:38 PM           420,716 SingletonFocus.GetCurrent.old.dump
01/08/2020  01:48 PM         8,284,487 SSPIWrapper.EncryptDecryptHelper.new.dump
01/08/2020  01:47 PM         8,226,753 SSPIWrapper.EncryptDecryptHelper.old.dump
01/07/2020  02:18 PM           566,507 SyntaxFactory.get_XmlCarriageReturnLineFeed.new.dump
01/07/2020  02:18 PM           559,116 SyntaxFactory.get_XmlCarriageReturnLineFeed.old.dump
01/07/2020  02:32 PM           854,689 SyntaxFactory.XmlTextNewLine.new.dump
01/07/2020  02:32 PM           843,843 SyntaxFactory.XmlTextNewLine.old.dump
01/07/2020  02:30 PM         1,673,092 XmlBinaryNodeWriter.WriteText.new.dump
01/07/2020  02:30 PM         1,678,243 XmlBinaryNodeWriter.WriteText.old.dump
01/07/2020  02:25 PM         4,270,321 XmlCanonicalWriter.WriteText.new.dump
01/07/2020  02:25 PM         4,259,185 XmlCanonicalWriter.WriteText.old.dump
01/08/2020  01:52 PM        14,559,393 XmlTextReaderImpl.ParseXmlDeclaration.new.dump
01/08/2020  01:52 PM        14,413,655 XmlTextReaderImpl.ParseXmlDeclaration.old.dump
01/07/2020  02:24 PM           462,652 XsltLoader.LoadEndTag.new.dump
01/07/2020  02:24 PM           465,815 XsltLoader.LoadEndTag.old.dump

@briansull
Copy link
Contributor Author

Most of the regressions are due to register allocation issues, with some due to missing a cascaded optimization due to a COMMA node assignment.

@ghost ghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI optimization
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants