-
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
[Mono] Interepreter Performance Regression, 25 benchmarks, -11-49% #45879
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. |
Tagging subscribers to this area: @BrzVlad Issue DetailsThis is an automatically generated issue from a performance run. Based on the dates of the change, it must have been caused by one of the commits in this range: 4a200d1...c218928 It seems like, from the commits, this is probably a false alarm. However, give then number of benchmarks and magnitude of the change, I want to do a little more digging and am opening this issue. I will assign it to myself for the initial invetigation. Automatic report below. <### Run Information
Regressions in System.Tests.Perf_UInt64
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_UInt64*' . PayloadsHistogramSystem.Tests.Perf_UInt64.ToString(value: 12345)
System.Tests.Perf_UInt64.ToString(value: 18446744073709551615)
System.Tests.Perf_UInt64.TryFormat(value: 18446744073709551615)
System.Tests.Perf_UInt64.TryFormat(value: 0)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Int64
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Int64*' . PayloadsHistogramSystem.Tests.Perf_Int64.TryFormat(value: 12345)
System.Tests.Perf_Int64.TryFormat(value: -9223372036854775808)
System.Tests.Perf_Int64.ToString(value: 9223372036854775807)
System.Tests.Perf_Int64.ToString(value: -9223372036854775808)
System.Tests.Perf_Int64.TryFormat(value: 9223372036854775807)
System.Tests.Perf_Int64.ToString(value: 12345)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_SByte
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_SByte*' . PayloadsHistogramSystem.Tests.Perf_SByte.ToString(value: -128)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Double
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Double*' . PayloadsHistogramSystem.Tests.Perf_Double.ToString(value: 12345)
System.Tests.Perf_Double.ToStringWithCultureInfo(value: -1.7976931348623157E+308, culture: zh)
System.Tests.Perf_Double.ToStringWithFormat(value: 12345, format: "G")
System.Tests.Perf_Double.ToStringWithFormat(value: 1.7976931348623157E+308, format: "E")
System.Tests.Perf_Double.ToStringWithFormat(value: 1.7976931348623157E+308, format: "G17")
System.Tests.Perf_Double.ToStringWithFormat(value: -1.7976931348623157E+308, format: "G")
System.Tests.Perf_Double.ToString(value: -1.7976931348623157E+308)
System.Tests.Perf_Double.ToStringWithFormat(value: -1.7976931348623157E+308, format: "G17")
System.Tests.Perf_Double.ToStringWithFormat(value: -1.7976931348623157E+308, format: "E")
System.Tests.Perf_Double.ToStringWithFormat(value: 12345, format: "R")
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Int16
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Int16*' . PayloadsHistogramSystem.Tests.Perf_Int16.ToString(value: -32768)
System.Tests.Perf_Int16.ToString(value: 32767)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_UInt16
Related Issue on x64 Windows[Perf 29%] System.Tests.Perf_UInt16 (2)
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_UInt16*' . PayloadsHistogramSystem.Tests.Perf_UInt16.ToString(value: 12345)
System.Tests.Perf_UInt16.ToString(value: 65535)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Single
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Single*' . PayloadsHistogramSystem.Tests.Perf_Single.ToStringWithCultureInfo(value: 3.4028235E+38, culture: zh)
System.Tests.Perf_Single.ToString(value: 12345)
System.Tests.Perf_Single.ToStringWithFormat(value: 3.4028235E+38, format: "E")
System.Tests.Perf_Single.ToString(value: 3.4028235E+38)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Int32
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Int32*' . PayloadsHistogramSystem.Tests.Perf_Int32.TryFormat(value: -2147483648)
System.Tests.Perf_Int32.ToString(value: 2147483647)
System.Tests.Perf_Int32.ToString(value: 12345)
System.Tests.Perf_Int32.ToString(value: -2147483648)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_UInt32
Related Issue on x64 Windows[Perf -11%] System.Tests.Perf_UInt32.TryParseHex
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_UInt32*' . PayloadsHistogramSystem.Tests.Perf_UInt32.ToString(value: 4294967295)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Byte
Related Issue on x64 Windows[Perf 46%] System.Tests.Perf_Byte.ToString
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Tests.Perf_Byte*' . PayloadsHistogramSystem.Tests.Perf_Byte.ToString(value: 255)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Buffers.Text.Tests.Utf8FormatterTests
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Buffers.Text.Tests.Utf8FormatterTests*' . PayloadsHistogramSystem.Buffers.Text.Tests.Utf8FormatterTests.FormatterDouble(value: 1.7976931348623157E+308)
System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDouble(value: -1.7976931348623157E+308)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Perf_Convert
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Perf_Convert*' . PayloadsHistogramSystem.Perf_Convert.ChangeType
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in PerfLabTests.LowLevelPerf
Related Issue on x64 Windows[Perf 22%] PerfLabTests.LowLevelPerf.InterfaceInterfaceMethodLongHierarchy
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'PerfLabTests.LowLevelPerf*' . PayloadsHistogramPerfLabTests.LowLevelPerf.IntegerFormatting
DocsProfiling workflow for dotnet/runtime repository
|
@EgorBo, could it be related to #45074, i.e. interpreter is slower for tuple returns vs. out args? |
Ah could be, will take a look. |
@SamMonoRT The ones that ran are between 10% and 20 % better after Vlad's PR, compared to immediately before. The absolute numbers look worse compared to what we see here though (both before and after). I am trying to figure out why. @DrewScoggins I am looking at this report generated yesterday, and comparing to some of the numbers I see in this issue. In that report I see System.Tests.Perf_UInt64.ToString(value: 12345) taking 381.04 ns. But in this issue it was 29 ns. Is this a valid comparison to make? I didn't see any subsequent regression issues generated, so I don't know how a dramatic slow down could be missed. |
@naricc - is this still actionable ? Please close the issue if not. |
Not sure if there is any point in keeping this issue alive. The change in the BCL was done and doesn't look like it will be reverted. In order to the recover the performance we would need to implement a basic struct promotion in the interpreter. Keeping track of this feature in the broader issue #47520 |
This is an automatically generated issue from a performance run. Based on the dates of the change, it must have been caused by one of the commits in this range: 4a200d1...c218928
It seems like, from the commits, this is probably a false alarm. However, give then number of benchmarks and magnitude of the change, I want to do a little more digging and am opening this issue. I will assign it to myself for the initial invetigation.
Automatic report below.
<### Run Information
Regressions in System.Tests.Perf_UInt64
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_UInt64.ToString(value: 12345)
System.Tests.Perf_UInt64.ToString(value: 18446744073709551615)
System.Tests.Perf_UInt64.TryFormat(value: 18446744073709551615)
System.Tests.Perf_UInt64.TryFormat(value: 0)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Int64
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Int64.TryFormat(value: 12345)
System.Tests.Perf_Int64.TryFormat(value: -9223372036854775808)
System.Tests.Perf_Int64.ToString(value: 9223372036854775807)
System.Tests.Perf_Int64.ToString(value: -9223372036854775808)
System.Tests.Perf_Int64.TryFormat(value: 9223372036854775807)
System.Tests.Perf_Int64.ToString(value: 12345)
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.Tests.Perf_Double
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Double.ToString(value: 12345)
System.Tests.Perf_Double.ToStringWithCultureInfo(value: -1.7976931348623157E+308, culture: zh)
System.Tests.Perf_Double.ToStringWithFormat(value: 12345, format: "G")
System.Tests.Perf_Double.ToStringWithFormat(value: 1.7976931348623157E+308, format: "E")
System.Tests.Perf_Double.ToStringWithFormat(value: 1.7976931348623157E+308, format: "G17")
System.Tests.Perf_Double.ToStringWithFormat(value: -1.7976931348623157E+308, format: "G")
System.Tests.Perf_Double.ToString(value: -1.7976931348623157E+308)
System.Tests.Perf_Double.ToStringWithFormat(value: -1.7976931348623157E+308, format: "G17")
System.Tests.Perf_Double.ToStringWithFormat(value: -1.7976931348623157E+308, format: "E")
System.Tests.Perf_Double.ToStringWithFormat(value: 12345, format: "R")
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)
System.Tests.Perf_Int16.ToString(value: 32767)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_UInt16
Related Issue on x64 Windows
[Perf 29%] System.Tests.Perf_UInt16 (2)
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_UInt16.ToString(value: 12345)
System.Tests.Perf_UInt16.ToString(value: 65535)
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.ToStringWithCultureInfo(value: 3.4028235E+38, culture: zh)
System.Tests.Perf_Single.ToString(value: 12345)
System.Tests.Perf_Single.ToStringWithFormat(value: 3.4028235E+38, format: "E")
System.Tests.Perf_Single.ToString(value: 3.4028235E+38)
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.TryFormat(value: -2147483648)
System.Tests.Perf_Int32.ToString(value: 2147483647)
System.Tests.Perf_Int32.ToString(value: 12345)
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.Tests.Perf_UInt32
Related Issue on x64 Windows
[Perf -11%] System.Tests.Perf_UInt32.TryParseHex
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_UInt32.ToString(value: 4294967295)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Byte
Related Issue on x64 Windows
[Perf 46%] System.Tests.Perf_Byte.ToString
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Byte.ToString(value: 255)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Buffers.Text.Tests.Utf8FormatterTests
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDouble(value: 1.7976931348623157E+308)
System.Buffers.Text.Tests.Utf8FormatterTests.FormatterDouble(value: -1.7976931348623157E+308)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Perf_Convert
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.Perf_Convert.ChangeType
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in PerfLabTests.LowLevelPerf
Related Issue on x64 Windows
[Perf 22%] PerfLabTests.LowLevelPerf.InterfaceInterfaceMethodLongHierarchy
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
PerfLabTests.LowLevelPerf.IntegerFormatting
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: