-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[Perf] Regressions from inliner changes #56012
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Improvements from this change: Run Information
Improvemnts in PerfLabTests.GetMember
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'PerfLabTests.GetMember*' PayloadsHistogramPerfLabTests.GetMember.GetMethod20
PerfLabTests.GetMember.GetMethod4
PerfLabTests.GetMember.GetMethod10
PerfLabTests.GetMember.GetMethod5
PerfLabTests.GetMember.GetMethod15
PerfLabTests.GetMember.GetMethod1
PerfLabTests.GetMember.GetMethod2
PerfLabTests.GetMember.GetMethod3
PerfLabTests.GetMember.GetMethod12
DocsProfiling workflow for dotnet/runtime repository
Improvemnts in System.Tests.Perf_Int64
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Int64*' PayloadsHistogramSystem.Tests.Perf_Int64.ToString(value: 9223372036854775807)
System.Tests.Perf_Int64.TryFormat(value: 9223372036854775807)
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Globalization.Tests.StringSearch
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Globalization.Tests.StringSearch*' PayloadsHistogramSystem.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, Ordinal, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (, None, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (, IgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, Ordinal, False))
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, None, False))
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (, None, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, Ordinal, False))
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, Ordinal, False))
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (, IgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, OrdinalIgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreNonSpace, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, None, False))
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, IgnoreCase, False))
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.IO.Tests.Perf_Path
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.IO.Tests.Perf_Path*' PayloadsHistogramSystem.IO.Tests.Perf_Path.GetDirectoryName
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Tests.Perf_Guid
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Guid*' PayloadsHistogramSystem.Tests.Perf_Guid.Parse
System.Tests.Perf_Guid.ctor_str
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Memory.ReadOnlySpan
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Memory.ReadOnlySpan*' PayloadsHistogramSystem.Memory.ReadOnlySpan.IndexOfString(input: "Hello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello Worldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylong!xyz", value: "w", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.IndexOfString(input: "StrIng", value: "string", comparisonType: OrdinalIgnoreCase)
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Numerics.Tests.Perf_Matrix4x4
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Numerics.Tests.Perf_Matrix4x4*' PayloadsHistogramSystem.Numerics.Tests.Perf_Matrix4x4.CreateScaleFromScalarXYZWithCenterBenchmark
System.Numerics.Tests.Perf_Matrix4x4.CreateFromScalars
System.Numerics.Tests.Perf_Matrix4x4.CreateRotationXWithCenterBenchmark
System.Numerics.Tests.Perf_Matrix4x4.CreateRotationYWithCenterBenchmark
System.Numerics.Tests.Perf_Matrix4x4.CreateScaleFromScalarXYZBenchmark
System.Numerics.Tests.Perf_Matrix4x4.CreateRotationZWithCenterBenchmark
System.Numerics.Tests.Perf_Matrix4x4.CreateScaleFromScalarWithCenterBenchmark
System.Numerics.Tests.Perf_Matrix4x4.CreateOrthographicOffCenterBenchmark
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Tests.Perf_UInt64
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_UInt64*' PayloadsHistogramSystem.Tests.Perf_UInt64.ToString(value: 18446744073709551615)
System.Tests.Perf_UInt64.TryFormat(value: 18446744073709551615)
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Text.Json.Tests.Perf_Base64
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Text.Json.Tests.Perf_Base64*' PayloadsHistogramSystem.Text.Json.Tests.Perf_Base64.WriteByteArrayAsBase64_NoEscaping(NumberOfBytes: 100)
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Tests.Perf_String
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_String*' PayloadsHistogramSystem.Tests.Perf_String.Split(s: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", arr: [' '], options: None)
System.Tests.Perf_String.Interpolation_MultipleArgs(c: '1', s: "Foo")
System.Tests.Perf_String.TrimEnd_CharArr(s: "Test", c: [' ', ' '])
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Tests.Perf_Enum
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Enum*' PayloadsHistogramSystem.Tests.Perf_Enum.Parse(text: "Red")
System.Tests.Perf_Enum.EnumToString(value: Yellow)
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Tests.Perf_Version
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Version*' PayloadsHistogramSystem.Tests.Perf_Version.Parse3
System.Tests.Perf_Version.Parse4
System.Tests.Perf_Version.Parse2
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Tests.Perf_Double
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Double*' PayloadsHistogramSystem.Tests.Perf_Double.ToStringWithFormat(value: 12345, format: "E")
System.Tests.Perf_Double.ToStringWithFormat(value: 1.7976931348623157E+308, format: "E")
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Text.Json.Serialization.Tests.ReadJson<Int32>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Text.Json.Serialization.Tests.ReadJson<Int32>*' PayloadsHistogramSystem.Text.Json.Serialization.Tests.ReadJson<Int32>.DeserializeFromUtf8Bytes
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Collections.CtorDefaultSize<Int32>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Collections.CtorDefaultSize<Int32>*' PayloadsHistogramSystem.Collections.CtorDefaultSize<Int32>.Dictionary
DocsProfiling workflow for dotnet/runtime repository Run Information
Improvemnts in System.Collections.IterateForEach<Int32>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Collections.IterateForEach<Int32>*' PayloadsHistogramSystem.Collections.IterateForEach<Int32>.ImmutableList(Size: 512)
DocsProfiling workflow for dotnet/runtime repository |
This issue has 11 regressions and 16 improvements. Almost all regressions have "U"-shape - it means my first PR #52708 improved it and the second one #55478 regressed it back. So overall it's a zero impact (Actually, in some benchmarks it's still an improvement after second PR). The second PR introduced a couple of "slowdown" mechanisms for the inliner like "if there are too many locals in the root method already - slow down inlining new calls" - I'd like to keep it, but it for sure has to be tuned, like changing linear dependency on number of locals to quadratic, etc. Here are the "U" shapes: |
The only exception is the first one
|
I'm going to move it to 7.0 since the overall it's an improvement (even some of the |
Run Information
Regressions in System.Memory.ReadOnlySpan
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", value: "X", comparisonType: Ordinal)
System.Memory.ReadOnlySpan.IndexOfString(input: "string1", value: "string2", comparisonType: InvariantCulture)
System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAA5AAAA", value: "5", comparisonType: InvariantCulture)
System.Memory.ReadOnlySpan.IndexOfString(input: "foobardzsdzs", value: "rddzs", comparisonType: InvariantCulture)
System.Memory.ReadOnlySpan.IndexOfString(input: "ABCDE", value: "c", comparisonType: InvariantCultureIgnoreCase)
System.Memory.ReadOnlySpan.IndexOfString(input: "Hello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello Worldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylong!xyz", value: "~", comparisonType: Ordinal)
System.Memory.ReadOnlySpan.IndexOfString(input: "Hello Worldbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbba!", value: "y", comparisonType: Ordinal)
System.Memory.ReadOnlySpan.IndexOfString(input: "だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだすだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ", value: "す", comparisonType: Ordinal)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in System.Formats.Cbor.Tests.Perf_CborReader
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Text String, Strict))
System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Byte String, Strict))
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.Concurrent.Count<String>
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Collections.Concurrent.Count<String>.Queue(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Boolean
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Boolean.Parse(value: "False")
System.Tests.Perf_Boolean.Parse(value: "True")
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Single
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Single.ToStringWithFormat(value: -3.4028235E+38, format: "R")
System.Tests.Perf_Single.ToStringWithFormat(value: 3.4028235E+38, format: "R")
System.Tests.Perf_Single.ToStringWithFormat(value: -3.4028235E+38, format: "G")
System.Tests.Perf_Single.ToStringWithFormat(value: 3.4028235E+38, format: "G")
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Int16
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Int16.ToString(value: -32768)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Int32
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Int32.ToString(value: -2147483648)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Net.NetworkInformation.Tests.PhysicalAddressTests
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Net.NetworkInformation.Tests.PhysicalAddressTests.PALong
System.Net.NetworkInformation.Tests.PhysicalAddressTests.PAMedium
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Security.Cryptography.X509Certificates.Tests.X509Certificate2Tests
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Security.Cryptography.X509Certificates.Tests.X509Certificate2Tests.CertProp
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_SByte
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_SByte.ToString(value: -128)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Net.Primitives.Tests.IPAddressPerformanceTests
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Net.Primitives.Tests.IPAddressPerformanceTests.TryFormat(address: 1020:3040:5060:7080:9010:1112:1314:1516)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
category:performance
theme:benchmarks
skill-level:intermediate
cost:medium
impact:small
The text was updated successfully, but these errors were encountered: