dotnet / perf-autofiling-issues

A landing place for auto-filed performance issues before they receive triage
MIT License
9 stars 4 forks source link

[Perf] Linux/x64: 4 Improvements on 4/17/2023 11:29:15 PM #16715

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Name Value
Architecture x64
OS ubuntu 18.04
Queue TigerUbuntu
Baseline 7dbf6a5f2fd636db350f9cc31b2dfd3af0eff1a8
Compare eb71e484d2d4a7ae002ea524d2edead773289bbb
Diff Diff
Configs AOT:true, CompilationMode:wasm, RunKind:micro

Improvements in System.Tests.Perf_Enum

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[TryParseGeneric_Flags - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_ubuntu 18.04_AOT=true_CompilationMode=wasm_RunKind=micro/System.Tests.Perf_Enum.TryParseGeneric_Flags(text%3a%20%22Red%2c%20Orange%2c%20Yellow%2c%20Green%2c%20Blue%22).html>) 1.81 μs 414.15 ns 0.23 0.18 False
[TryParseGeneric_Flags - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_ubuntu 18.04_AOT=true_CompilationMode=wasm_RunKind=micro/System.Tests.Perf_Enum.TryParseGeneric_Flags(text%3a%20%22Red%22).html>) 637.50 ns 253.32 ns 0.40 0.24 False
[Parse_Flags - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_ubuntu 18.04_AOT=true_CompilationMode=wasm_RunKind=micro/System.Tests.Perf_Enum.Parse_Flags(text%3a%20%22Red%2c%20Orange%2c%20Yellow%2c%20Green%2c%20Blue%22).html>) 1.88 μs 361.46 ns 0.19 0.21 False
[Parse_Flags - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_ubuntu 18.04_AOT=true_CompilationMode=wasm_RunKind=micro/System.Tests.Perf_Enum.Parse_Flags(text%3a%20%22Red%22).html>) 637.70 ns 194.21 ns 0.30 0.28 False

graph graph graph graph Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline Compare

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Enum*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Tests.Perf_Enum.TryParseGeneric_Flags(text: "Red, Orange, Yellow, Green, Blue") ```log ``` ### Description of detection logic ``` IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed: Marked as improvement because 414.15161261517864 < 1.7107751465828234. IsChangePoint: Marked as a change because one of 2/1/2023 12:50:52 AM, 2/28/2023 7:53:18 AM, 3/22/2023 10:50:22 PM, 3/23/2023 11:51:53 PM, 4/17/2023 6:40:18 PM, 4/19/2023 1:39:34 AM falls between 4/10/2023 1:33:42 PM and 4/19/2023 1:39:34 AM. IsImprovementStdDev: Marked as improvement because 100.58654972053226 (T) = (0 -416.14477278007803) / Math.Sqrt((82645.90836190665 / (299)) + (6.314941706093503 / (4))) is greater than 1.9678765312856872 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (4) - 2, .975) and 0.8011936643577752 = (2093.2168556689217 - 416.14477278007803) / 2093.2168556689217 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` #### System.Tests.Perf_Enum.TryParseGeneric_Flags(text: "Red") ```log ``` ### Description of detection logic ``` IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed: Marked as improvement because 253.3249285070232 < 603.3636399383453. IsChangePoint: Marked as a change because one of 3/10/2023 8:06:53 PM, 4/17/2023 6:40:18 PM, 4/19/2023 1:39:34 AM falls between 4/10/2023 1:33:42 PM and 4/19/2023 1:39:34 AM. IsImprovementStdDev: Marked as improvement because 98.3389920846954 (T) = (0 -250.8975681520577) / Math.Sqrt((4657.8112256945315 / (299)) + (30.440709696316215 / (4))) is greater than 1.9678765312856872 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (4) - 2, .975) and 0.6536667837566277 = (724.4398064774392 - 250.8975681520577) / 724.4398064774392 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` #### System.Tests.Perf_Enum.Parse_Flags(text: "Red, Orange, Yellow, Green, Blue") ```log ``` ### Description of detection logic ``` IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed: Marked as improvement because 361.46378088281136 < 1.7056879232792013. IsChangePoint: Marked as a change because one of 2/1/2023 12:50:52 AM, 2/28/2023 7:53:18 AM, 3/22/2023 10:50:22 PM, 3/23/2023 11:51:53 PM, 4/17/2023 6:40:18 PM, 4/19/2023 1:39:34 AM falls between 4/10/2023 1:33:42 PM and 4/19/2023 1:39:34 AM. IsImprovementStdDev: Marked as improvement because 100.87697669471922 (T) = (0 -364.09992851944094) / Math.Sqrt((80093.38612308251 / (299)) + (14.326497410609647 / (3))) is greater than 1.9679030112610798 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (3) - 2, .975) and 0.8206210965390984 = (2029.7812144826844 - 364.09992851944094) / 2029.7812144826844 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` #### System.Tests.Perf_Enum.Parse_Flags(text: "Red") ```log ``` ### Description of detection logic ``` IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed: Marked as improvement because 194.21148640719733 < 552.1181962162242. IsChangePoint: Marked as a change because one of 3/10/2023 8:06:53 PM, 4/17/2023 6:40:18 PM, 4/19/2023 1:39:34 AM falls between 4/10/2023 1:33:42 PM and 4/19/2023 1:39:34 AM. IsImprovementStdDev: Marked as improvement because 116.99100901628735 (T) = (0 -196.11114628039184) / Math.Sqrt((3903.5594026394883 / (299)) + (9.488558647470759 / (4))) is greater than 1.9678765312856872 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (4) - 2, .975) and 0.7008800407658856 = (655.6270828015864 - 196.11114628039184) / 655.6270828015864 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
lewing commented 1 year ago

@tannergooding this looks like https://github.com/dotnet/runtime/pull/84582

tannergooding commented 1 year ago

That's a very nice win for enum parsing on wasm.

CC. @stephentoub, @jeffhandley

jeffhandley commented 1 year ago

This is fantastic! Great outcome here, @tannergooding.